好看的效果
1.复选框:
思路是使用复选框并进行隐藏,然后自己写一个div,并且用:before来放进div复选框这,不少地方采用绝对定位,在:checked时更改对应颜色。
<div class="container">
<h2>To it</h2>
<ul>
<li>
<input type="radio" id="f-option" name="selector" />
<label for="f-option">Pizza</label>
<div class="check"></div>
</li>
<li>
<input type="radio" id="s-option" name="selector" />
<label for="s-option">Bacon</label>
<div class="check">
<div class="inside"></div>
</div>
</li>
<li>
<input type="radio" id="t-option" name="selector" />
<label for="t-option">Cats</label>
<div class="check">
<div class="inside"></div>
</div>
</li>
</ul>
</div>
body,html{
height: 100%;
background: #222222;
font-family: 'lato', sans-serif;
}
.container{
display: block;
position: relative;
margin: 40px auto;
height: auto;
width: 500px;
padding: 20px;
}
h2{
color: #AAAAAA;
}
.container ul{
list-style: none;
margin: 0;
padding: 0;
overflow:auto;
}
ul li{
color:#AAAAAA;
display: block;
position: relative;
float: left;
width: 100%;
height: 100px;
border-bottom: 1px solid #333;
}
ul li input[type=radio]{
position: absolute;
visibility: hidden;
}
ul li label{
display: block;
position: relative;
font-weight: 300;
font-size: 1.35em;
padding: 25px 25px 25px 80px;
margin: 10px auto;
height: 30px;
z-index: 9;
cursor: pointer;
transition: all 0.25s linear;
}
ul li:hover label{
color: #fff;
}
ul li .check{
display: block;
position:absolute;
border: 5px solid #AAAAAA;
border-radius: 100%;
height: 25px;
width: 25px;
top: 30px;
left: 20px;
z-index: 5;
transition: border .25s linear;
-webkit-animation: border .25s linear;
}
ul li:hover .check{
border: 5px solid #fff;
}
ul li .check::before{
display: block;
position:absolute;
content: '';
border-radius: 100%;
height: 15px;
width: 15px;
top: 5px;
left: 5px;
margin: auto;
transition: all 0.25s linear;
}
input[type=radio]:checked ~ .check{
border:5px solid #0DFF92
}
input[type=radio]:checked ~.check::before{
background: #0DFF92;
}
input[type=radio]:checked ~ label{
color: #0DFF92;
}
对应效果:
2.菜单栏:使用复选框,设置为透明,使用三条span实现图案,然后三个span可以通过transform来定义旋转角度以及设置变换原点,然后使用选择器三条杆的选择方向不同.
<nav role="navigation">
<div id="menuToggle">
<input type="checkbox"/>
<span></span>
<span></span>
<span></span>
<ul id="menu">
<a href="#"><li>Home</li></a>
<a href="#"><li>About</li></a>
<a href="#"><li>Info</li></a>
</ul>
</div>
</nav>
body{
margin: 0;
padding: 0;
background: #232323;
color: #cdcdcd;
font-family: "Avenir Next","Avenir",sans-serif;
}
#menuToggle{
display: block;
position: relative;
top:50px;
left: 50px;
z-index: 1;
user-select: none;
}
#menuToggle a{
text-decoration: none;
color: #232323;
transition: color 0.3s ease;
}
#menuToggle a:hover{
color: tomato;
}
#menuToggle input{
display: block;
width: 40px;
height: 32px;
position: absolute;
top:-7px;
left: -5px;
cursor: pointer;
opacity: 0;
z-index:2;
}
#menuToggle span
{
display: block;
width: 33px;
height: 4px;
margin-bottom: 5px;
position: relative;
background:#cdcdcd;
border-radius: 3px;
z-index:1;
transform-origin: 4px 0px;
transition: transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0),background 0.5s cubic-bezier(0.77,0.2,0.05,1.0),opacity 0.55s ease;
}
#menuToggle span:first-child
{
transform-origin: 0% 0%;
}
#menuToggle span:nth-last-child(2)
{
transform-origin: 0% 100%;
}
#menuToggle input:checked ~ span
{
opacity: 1;
transform: rotate(45deg) translate(-2px,-1px);
background: #232323;
}
#menuToggle input:checked ~ span:nth-last-child(3)
{
opacity: 0;
transform: rotate(0deg) scale(0.2,0.2);
}
#menuToggle input:checked ~ span:nth-last-child(2)
{
transform: rotate(-45deg) translate(0,-1px);
}
#menu
{
position:absolute;
width: 300px;
margin: -100px 0 0 -50px;
padding: 50px;
padding-top: 125px;
background: #ededed;
list-style-type: none;
-webkit-font-smoothing:antialiased;
transform-origin: 0% 0%;
transform: translate(-100%,0);
transition: transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0);
}
#menu li
{
padding: 10px 0;
font-size: 22px;
}
#menuToggle input:checked ~ ul
{
transform: none;
}
标签:效果,transform,ul,menuToggle,CSS,input,position,border,好看
From: https://www.cnblogs.com/mengyiqwq/p/16826579.html