svg+css实现一款拟态手机运动类app界面UI效果代码

代码语言:html

所属分类:布局界面

代码描述:svg+css实现一款拟态手机运动类app界面UI效果代码

代码标签: svg css 拟态 运动 app ui

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >
<head>
  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"><link rel='stylesheet' href='https://fonts.googleapis.com/css2?family=Nunito:wght@300;400;700&amp;display=swap'>
  
  <style>
      * {
	border: 0;
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}
:root {
	--hue: 184;
	--bg: hsl(var(--hue),10%,90%);
	--fg: hsl(var(--hue),66%,24%);
	--primary: hsl(var(--hue),66%,44%);
	--gradient: linear-gradient(145deg, hsl(var(--hue),10%,85%), hsl(var(--hue),10%,100%));
	font-size: 16px;
}
body,
button {
	color: var(--fg);
	font: 1em/1.5 "Nunito", sans-serif;
}
body {
	background: var(--bg);
	height: 100vh;
	display: grid;
	place-items: center;
	padding: 1.5em 0 0 0;
}
body:after {
	content: "";
	display: block;
	height: 1.5em;
	width: 100%;
}
/* All */
.app,
.header,
.main__date-nav,
.main__stat-row,
.main__stat-graph,
.footer {
	display: flex;
}
.header,
.main__date-nav,
.footer {
	justify-content: space-between;
}
.header__profile-btn,
.header__notes-btn,
.main__date-arrow-btn,
.main__date-edit-btn,
.footer__nav-btn {
	background: transparent;
	display: flex;
	outline: transparent;
	transition: all 0.15s linear;
	-webkit-appearance: none;
	appearance: none;
	-webkit-tap-highlight-color: transparent;
}
.app {
	background: hsl(var(--hue),10%,85%);
	border-radius: 3em;
	flex-direction: column;
	padding: 2.25em;
	width: 390px;
	height: 844px;
}
.app__gradients {
	position: absolute;
	width: 1px;
	height: 1px;
}
.icon {
	display: block;
	margin: auto;
	width: 1.5em;
	height: 1.5em;
}
.icon circle,
.icon path {
	fill: currentColor;
	transition: fill 0.15s linear;
}
.icon ellipse,
.icon polygon {
	stroke: currentColor;
	transition: stroke 0.15s linear;
}
.icon .no-fill {
	fill: none;
	stroke: currentColor;
}
.icon--red path {
	fill: hsl(3,90%,55%);
}
.icon--pulse {
	animation:
		bpm 1s linear,
		pulse 0.75s 1s linear infinite;
}
.ring,
.sr-only {
	position: absolute;
}
.ring {
	display: block;
	inset: 0;
	width: 100%;
	height: auto;
}
.ring-fill {
	 stroke: url("#ring");
}
.ring-stroke {
	animation-duration: 1s;
	animation-timing-function: ease-in-out;
	stroke: url("#ring");
}
.ring-stroke--steps {
	animation-name: stepCount;
}
.ring-stroke--cals {
	animation-name: cals;
}
.ring-stroke--miles {
	animation-name: miles;
}
.ring-stroke--mins {
	animation-name: mins;
}
.ring-stroke--stepHrs {
	animation-name: stepHrs;
}
.ring-track {
	stroke: hsl(var(--hue),10%,80%);
}
.sr-only {
	clip: rect(1px,1px,1px,1px);
	overflow: hidden;
	width: 1px;
	height: 1px;
}
/* Header */
.header {
	display: flex;
	justify-content: space-between;
	margin-bottom: 1.5em;
}
.header__profile-btn,
.header__notes-btn {
	width: 3em;
	height: 3em;
}
.header__profile-btn {
	border-radius: 1em;
	box-shadow: 0 0 0 0.125em inset;
}
.header__notes-btn {
	margin-right: -1em;
}
.header__profile-btn:active,
.header__notes-btn:active {
	transform: scale(0.9);
}
.header__profile-btn:focus {
	box-shadow: 0 0 0 0.125em var(--primary) inset;
}
.header__profile-icon {
	border-radius: 0.5em;
	margin: auto;
	width: 2em;
	height: 2em;
}
.header__notes-btn:focus .icon path {
	fill: var(--primary);
}
/* Main */
.main__date-nav {
	margin-bottom: 1.5em;
}
.main__date-arrow-btn,
.main__date-edit-btn {
	height: 1.5em;
}
.main__date-arrow-btn {
	width: 1.5em;
}
.main__date-arrow-btn:active .icon path,
.main__date-arrow-btn:focus .icon path {
	fill: var(--primary);
}
.main__date {
	text-transform: uppercase;
}
.main__date-edit-btn {
	min-width: 1.5em;
}
.main__date-edit-btn:active,
.main__date-edit-btn:focus {
	color: var(--primary);
}
.main__stat-blocks {
	display: grid;
	grid-template-columns: repeat(3,1fr);
	grid-gap: 1.5em;
	margin-bottom: 1.5em;
}
.main__stat-block {
	aspect-ratio: 1 / 1;
	background: var(--gradient);
	border-radius: 1.5em;
	box-shadow:
		-0.75em -0.75em 2.25em hsl(0,0%,100%),
		0.75em 0.75em 2.25em hsl(var(--hue),5%,65%);
	padding: 0.75em;
	text-align: center;
	width: 100%;
}
.main__stat-block--lg {
	aspect-ratio: 2 / 1;
	grid-column: 1 / 4;
	padding: 1.5em;
}
.main__stat-rows,
.main__stat-row {
	margin-bottom: 1.5em;
}
.main__stat-row {
	ali.........完整代码请登录后点击上方下载按钮下载查看

网友评论0