css3
伪元素css3
中经常使用的伪元素:css
::first-line
::first-letter
::before
::after
::selection
::placeholder
注意:html
按照规范,css3
中的伪元素的话,应该使用的是双冒号(::
)而不是单个冒号(:
),可是,因为旧版本的 W3C 规范并未对此进行特别区分,所以目前绝大多数的浏览器都同时支持使用这两种方式来表示伪元素。css3
border-radius
制做圆角.border-radius {
width: 100px;
height: 100px;
background: skyblue;
border-radius: 100% 100% 0 0;
}
复制代码
实现的原理:web
要建立一个四分之一的椭圆,其中一个角的水平和垂直值都须要等于100%,而其余三个角都不能设为圆角。浏览器
具体的代码:布局
.border-radius {
width: 100px;
height: 100px;
background: skyblue;
border-radius: 100% 0 0 0;
}
复制代码
具体的效果:ui
css3
画三角形和对话框若是咱们把一个盒子把宽度和高度分别设置为0,而后用边框填充的方式,那么咱们获得的是什么?spa
.triangle {
width: 0;
height: 0;
margin: 50px auto;
border-top: 50px solid red;
border-right: 50px solid green;
border-bottom: 50px solid blue;
border-left: 50px solid purple;
}
复制代码
获得的效果为:3d
如今有一个想法就是,咱们把任意一边边框的颜色设置为透明色,获得的效果是怎样的?code
.triangle {
width: 0;
height: 0;
margin: 50px auto;
border-top: 50px solid transparent;
border-right: 50px solid green;
border-bottom: 50px solid blue;
border-left: 50px solid purple;
}
复制代码
获得的效果以下:
若是咱们把任意两边都设置为透明色的话,获得的效果又是怎样的呢?
.triangle {
width: 0;
height: 0;
margin: 50px auto;
border-top: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 50px solid blue;
border-left: 50px solid purple;
}
复制代码
最终咱们获得的是一个直角三角形:
若是咱们想获得一个三角形的话,具体的实现又是怎样的呢?设置任意三边都为透明色,咱们来看一下具体的代码。
.triangle {
width: 0;
height: 0;
margin: 50px auto;
border-top: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 50px solid transparent;
border-left: 50px solid purple;
}
复制代码
若是咱们想要不一样方向的三角形,那么咱们就把其余的方向上的三条边都设置为透明色,最终就能够获得你想要的三角形的了。
最后获得的效果:
终极boss,咱们利用三角形怎样写一个对话框呢?
<div class="dialog"></div 复制代码
.dialog {
width: 200px;
height: 50px;
background: skyblue;
border-radius: 10px;
}
复制代码
获得的效果:
三角形咱们应该怎样设置的呢?在css3
中,为咱们提供了伪元素,::before
和 ::after
这两个伪元素,因此设置三角形,咱们就把它交给伪元素。
.dialog::before {
content: '';
width: 0;
height: 0;
border-top: 10px solid transparent;
border-right: 10px solid skyblue;
border-bottom: 10px solid transparent;
}
复制代码
获得的效果:
菱形的实现的原理就是使一个正方形旋转45度就能够获得一个菱形,具体的代码以下:
.diamond {
width: 100px;
height: 100px;
margin: 100px auto;
background: skyblue;
transform: rotate(45deg);
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
}
复制代码
获得的效果:
平行四边形实现的原理: 首先咱们须要设置一个普通的四边形,而后经过transform: skewX(-45deg)
,可获得一个平行四边形。
<a href="#" class="button">
<div>clike me</div>
</a>
复制代码
.button {
display: block;
width: 100px;
height: 50px;
line-height: 50px;
margin: 100px auto;
transform: skewX(-45deg);
-webkit-transform: skewX(-45deg);
-moz-transform: skewX(-45deg);
-ms-transform: skewX(-45deg);
-o-transform: skewX(-45deg);
background: skyblue;
font-size: 14px;
color: #fff;
text-decoration: none;
text-align: center;
}
.button > div {
transform: skewX(45deg);
}
复制代码
注意:
怎样让容器进行倾斜,而内容不进行倾斜的,主要的解决的方案的话,就是再应用一次反向的skew()
变形,从而抵消掉容器的变形效果,具体的代码以下:
.button > div {
transform: skewX(45deg);
}
复制代码
最后获得的效果:
css3
实现五角星和六角星五角星的实现的原理的话,主要就是利用三个三角形进行拼接而成的
首先咱们先制做第一个三角形,而后其余的两个三角形的话,咱们能够采用伪元素的方式来制做。
css3
中的transform: rotate()
的旋转角度的方式将其进行旋转,就获得一个三角形。#star {
width: 0;
height: 0;
border-bottom: 70px solid red;
border-right: 100px solid transparent;
border-left: 100px solid transparent;
transform: rotate(35deg);
-webkit-transform: rotate(35deg);
-moz-transform: rotate(35deg);
-ms-transform: rotate(35deg);
-o-transform: rotate(35deg);
}
复制代码
#star::before {
content: '';
position: absolute;
top: -45px;
left: -65px;
width: 0;
height: 0;
border-bottom: 80px solid red;
border-left: 30px solid transparent;
border-right: 30px solid transparent;
transform: rotate(-35deg);
-webkit-transform: rotate(-35deg);
-moz-transform: rotate(-35deg);
-ms-transform: rotate(-35deg);
-o-transform: rotate(-35deg);
}
复制代码
#star::after {
content: '';
position: absolute;
top: 3px;
left: -105px;
border-bottom: 70px solid red;
border-left: 100px solid transparent;
border-right: 100px solid transparent;
transform: rotate(-70deg);
-webkit-transform: rotate(-70deg);
-moz-transform: rotate(-70deg);
-ms-transform: rotate(-70deg);
-o-transform: rotate(-70deg);
}
复制代码
所有实现的代码:
#star {
width: 0;
height: 0;
border-bottom: 70px solid red;
border-right: 100px solid transparent;
border-left: 100px solid transparent;
transform: rotate(35deg);
-webkit-transform: rotate(35deg);
-moz-transform: rotate(35deg);
-ms-transform: rotate(35deg);
-o-transform: rotate(35deg);
}
#star::before {
content: '';
position: absolute;
top: -45px;
left: -65px;
width: 0;
height: 0;
border-bottom: 80px solid red;
border-left: 30px solid transparent;
border-right: 30px solid transparent;
transform: rotate(-35deg);
-webkit-transform: rotate(-35deg);
-moz-transform: rotate(-35deg);
-ms-transform: rotate(-35deg);
-o-transform: rotate(-35deg);
}
#star::after {
content: '';
position: absolute;
top: 3px;
left: -105px;
border-bottom: 70px solid red;
border-left: 100px solid transparent;
border-right: 100px solid transparent;
transform: rotate(-70deg);
-webkit-transform: rotate(-70deg);
-moz-transform: rotate(-70deg);
-ms-transform: rotate(-70deg);
-o-transform: rotate(-70deg);
}
复制代码
六角形的实现原理就是利用两个三角形进行布局的,一个正三角,另外一个旋转180。
首先咱们来制做第一个三角形:
#star {
position: relative;
width: 0;
height: 0;
border-bottom: 100px solid red;
border-right: 50px solid transparent;
border-left: 50px solid transparent;
}
复制代码
最终获得的效果:
第二个三角形,就是在第一个图形的基础上,把border-bottom
改成border-top
便可,而后经过定位的方式,将其放在适当的位置:
#star::after {
content: '';
position: absolute;
top: 30px;
left: -50px;
width: 0;
height: 0;
border-top: 100px solid red;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
}
复制代码
获得的效果:
完整代码以下:
#star {
position: relative;
width: 0;
height: 0;
border-bottom: 100px solid red;
border-right: 50px solid transparent;
border-left: 50px solid transparent;
}
#star::after {
content: '';
position: absolute;
top: 30px;
left: -50px;
width: 0;
height: 0;
border-top: 100px solid red;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
}
复制代码
css3
制做五边形和六边形制做五边形的原理就是利用一个正三角形+一个梯形
那咱们怎样来制做一个梯形呢?咱们制做三角形的时候,是把宽高分别设置为0,而后利用边框进行填充,就获得了一个个三角形,其实梯形的制做原理就是其基础上,设置宽高,就能够获得一个梯形。
#trapezoid {
position: relative;
width: 0;
height: 0;
border-top: 100px solid green;
border-bottom: 100px solid red;
border-right: 100px solid blue;
border-left: 100px solid yellow;
}
复制代码
#trapezoid {
position: relative;
width: 50px;
height: 50px;
border-top: 100px solid green;
border-bottom: 100px solid red;
border-right: 100px solid blue;
border-left: 100px solid yellow;
}
复制代码
获得的效果:
五边形的制做原理,就是利用一个三角形+一个梯形组成的
首先梯形的制做:
#trapezoid {
position: relative;
width: 100px;
height: 0;
border-top: 100px solid skyblue;
border-right: 50px solid transparent;
border-left: 50px solid transparent;
}
复制代码
再者三角形的制做:
#trapezoid::before {
content: '';
position: absolute;
top: -200px;
left: -50px;
width: 0;
height: 0;
border-bottom: 100px solid skyblue;
border-right: 100px solid transparent;
border-left: 100px solid transparent;
}
复制代码
最后的效果图:
完整示例代码:
#trapezoid {
position: relative;
width: 100px;
height: 0;
border-top: 100px solid skyblue;
border-right: 50px solid transparent;
border-left: 50px solid transparent;
}
#trapezoid::before {
content: '';
position: absolute;
top: -200px;
left: -50px;
width: 0;
height: 0;
border-bottom: 100px solid skyblue;
border-right: 100px solid transparent;
border-left: 100px solid transparent;
}
复制代码
六边形的制做原理还蛮简单的,就是利用两个三角形+一个正方形,就能够制做一个六边形。
首先咱们先制做一个正方形:
#hexagon {
position: relative;
width: 100px;
height: 55px;
background: skyblue;
}
复制代码
获得的效果图:
两个三角形的制做:
#hexagon::before {
content: '';
position: absolute;
top: -25px;
width: 0;
height: 0;
border-bottom: 25px solid skyblue;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
}
#hexagon::after {
content: '';
position: absolute;
top: 55px;
width: 0;
height: 0;
border-top: 25px solid skyblue;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
}
复制代码
获得的六边形的效果:
实例的代码:
#hexagon {
position: relative;
width: 100px;
height: 55px;
background: skyblue;
}
#hexagon::before {
content: '';
position: absolute;
top: -25px;
width: 0;
height: 0;
border-bottom: 25px solid skyblue;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
}
#hexagon::after {
content: '';
position: absolute;
top: 55px;
width: 0;
height: 0;
border-top: 25px solid skyblue;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
}
复制代码
css3
画心形和蛋形心形的制做就是两个长方形进行组合,而后头部能够用border-radius
设置为圆角。
第一个长方形:
.heart {
position: relative;
width: 100px;
height: 90px;
}
.heart::before {
content: '';
position: absolute;
left: 50px;
width: 50px;
height: 80px;
background: red;
border-radius: 50px 40px 0 0;
-webkit-border-radius: 50px 40px 0 0;
-moz-border-radius: 50px 40px 0 0;
-ms-border-radius: 50px 40px 0 0;
-o-border-radius: 50px 40px 0 0;
transform-origin: 0 100%;
transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
}
复制代码
第二个长方形:
.heart::after {
content: '';
position: absolute;
width: 50px;
height: 80px;
background: red;
border-radius: 50px 40px 0 0;
-webkit-border-radius: 50px 40px 0 0;
-moz-border-radius: 50px 40px 0 0;
-ms-border-radius: 50px 40px 0 0;
-o-border-radius: 50px 40px 0 0;
transform-origin: 100% 100%;
transform: rotate(45deg);
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
}
复制代码
获得的效果:
完整的实例代码:
.heart {
position: relative;
width: 100px;
height: 90px;
}
.heart::before {
content: '';
position: absolute;
left: 50px;
width: 50px;
height: 80px;
background: red;
border-radius: 50px 40px 0 0;
-webkit-border-radius: 50px 40px 0 0;
-moz-border-radius: 50px 40px 0 0;
-ms-border-radius: 50px 40px 0 0;
-o-border-radius: 50px 40px 0 0;
transform-origin: 0 100%;
transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
}
.heart::after {
content: '';
position: absolute;
width: 50px;
height: 80px;
background: red;
border-radius: 50px 40px 0 0;
-webkit-border-radius: 50px 40px 0 0;
-moz-border-radius: 50px 40px 0 0;
-ms-border-radius: 50px 40px 0 0;
-o-border-radius: 50px 40px 0 0;
transform-origin: 100% 100%;
transform: rotate(45deg);
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
}
复制代码
鸡蛋的实现: 鸡蛋的实现的原理就是一个长方形 + css3
的border-radius
属性设置一个圆,而后border-radius
利用 /
设置不一样的形状的大小。
.egg {
width: 126px;
height: 180px;
background: #fa0;
border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
-webkit-border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
-moz-border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
-ms-border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
-o-border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
}
复制代码
最终的实现效果:
css3
画太极阴阳图画太极阴阳图的第一步就是画一个椭圆 + 黑白两边的话,能够加上border-left
这个属性