来源:自学PHP网 时间:2015-04-14 14:51 作者: 阅读:次
[导读] See the Pen CSS3 Lotus by haiqing wang (@whqet) onCodePen 大家先来看看效果,纯CSS3实现,为了简化问题,使用LESS和prefix free。下面来开工,先看html CSS3制作莲花开放...
|
See the Pen CSS3 Lotus by haiqing wang (@whqet) onCodePen. 大家先来看看效果,纯CSS3实现,为了简化问题,使用LESS和prefix free。 下面来开工,先看html 利用div.leaf这个DIV来实现叶子。 CSS部分,Less的一些变量和Mixin,主要有opacity、animate和transform。 /*定义变量*/
@leafWidth:150px;
@bgColor:#333;
/*定义Mixins*/
// OPACITY
.opacity(@val){
opacity:@val;
@cent:@val*100;
filter:~"alpha(opacity=@{cent})";
}
// Animations
.animate(@val){
-webkit-animation: @val;
-moz-animation: @val;
-o-animation: @val;
animation: @val;
}
// Animation Delay
.animate-delay(@val){
-webkit-animation-delay: @val;
-moz-animation-delay: @val;
-o-animation-delay: @val;
animation-delay: @val;
}
// Transform MIXIN
.transform (@val;@origin:0 0) {
-webkit-transform: @val;
-webkit-transform-origin: @origin;
-moz-transform: @val;
-moz-transform-origin: @origin;
-ms-transform: @val;
-ms-transform-origin: @origin;
-o-transform: @val;
-o-transform-origin: @origin;
transform: @val;
transform-origin: @origin;
}然后是布局的CSS
body{
background-color: @bgColor;
}
.demo{
width:@leafWidth*1.5;
height: @leafWidth*1.5;
margin: 300px auto 0;
position: relative;
.transform(rotate(135deg),center center);
.leaf{
width: @leafWidth;
height: @leafWidth;
border-radius: @leafWidth 0px;
background: linear-gradient(45deg, rgba(188,190,192,1) 8%,rgba(158,31,99,1) 30%,rgba(158,31,99,1) 100%);
.opacity(.5);
position: absolute;
margin-top: 400px;
}
}
这里,使用border-radius将矩形div变成叶子形状,利用linear-gradient实现叶子填充。 然后将叶子位置初始化 @iterations:10;
@degrees:360/@iterations * 1deg;
// Looping generator
.loop (@index) when (@index>0){
&:nth-child(@{iterations}n + @{index}){
// Create a skew which is a number of degrees from the root element
.animate-delay(@index/10 * 1s);
@rotate:@index*@degrees+180deg;
.transform(rotate(@rotate), top right);
}
.loop((@index - 1));
}LESS循环遍历.leaf,进行位置初始化,动画延迟设置。
然后定义关键帧动画 @keyframes openAnimate{
to {
.transform(rotate(360deg),top right);
}
}在.leaf的css里,调用刚刚的遍历循环和动画。
.leaf{
width: @leafWidth;
height: @leafWidth;
border-radius: @leafWidth 0px;
background: linear-gradient(45deg, rgba(188,190,192,1) 8%,rgba(158,31,99,1) 30%,rgba(158,31,99,1) 100%);
.opacity(.5);
position: absolute;
margin-top: 400px;
//设置动画和遍历
.animate(openAnimate 6s ease-in-out infinite alternate);
.loop(@iterations);
}
完成版的CSS如下所示。 /*定义变量*/
@leafWidth:150px;
@bgColor:#333;
/*定义Mixins*/
// OPACITY
.opacity(@val){
opacity:@val;
@cent:@val*100;
filter:~"alpha(opacity=@{cent})";
}
// Animations
.animate(@val){
-webkit-animation: @val;
-moz-animation: @val;
-o-animation: @val;
animation: @val;
}
// Animation Delay
.animate-delay(@val){
-webkit-animation-delay: @val;
-moz-animation-delay: @val;
-o-animation-delay: @val;
animation-delay: @val;
}
// Transform MIXIN
.transform (@val;@origin:0 0) {
-webkit-transform: @val;
-webkit-transform-origin: @origin;
-moz-transform: @val;
-moz-transform-origin: @origin;
-ms-transform: @val;
-ms-transform-origin: @origin;
-o-transform: @val;
-o-transform-origin: @origin;
transform: @val;
transform-origin: @origin;
}
@iterations:10;
@degrees:360/@iterations * 1deg;
// Looping generator
.loop (@index) when (@index>0){
&:nth-child(@{iterations}n + @{index}){
// Create a skew which is a number of degrees from the root element
.animate-delay(@index/10 * 1s);
@rotate:@index*@degrees+180deg;
.transform(rotate(@rotate), top right);
}
.loop((@index - 1));
}
@keyframes openAnimate{
to {
.transform(rotate(360deg),top right);
}
}
body{
background-color: @bgColor;
}
.demo{
width:@leafWidth*1.5;
height: @leafWidth*1.5;
margin: 300px auto 0;
position: relative;
.transform(rotate(135deg),center center);
.leaf{
width: @leafWidth;
height: @leafWidth;
border-radius: @leafWidth 0px;
background: linear-gradient(45deg, rgba(188,190,192,1) 8%,rgba(158,31,99,1) 30%,rgba(158,31,99,1) 100%);
.opacity(.5);
position: absolute;
margin-top: 400px;
.animate(openAnimate 6s ease-in-out infinite alternate);
.loop(@iterations);
}
}好了,整个效果就是这样。
大家可以到我的codepen在线修改、体验,或是下载收藏本效果。 --------------------------------------------------------------- |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com