CSS3初体验之奇技淫巧

2022-12-17 0 261

(点选下方社会公众号,可加速高度关注)

译者:luckykun

镜像:http://luckykun.com/work/2016-07-04/css3-study01.html

自CSS3盛行年来,尽管从前看完两遍大部份的追加特性,但只不过在前述工程项目中加进的寥寥无几。因此没逐步形成整体性的重新认识,和看见效用立刻就能想不到软件系统的潜能。接着前段时间刚好碰到两个须要绘出大批动画电影的市场需求,因此下定决心借此机会回去科学研究呵呵那个既熟识又孤单的css3。

在正式宣布已经开始css3以后,先来如是说许多较为经典之作的css3示例,让我们回去领略css3的气质,责任编辑会提及下列两个css3的特性:

border-radius、::after、attr和content、box-sizing、linear-gradient、radial-gradient、box-shadow

border-radius

坚信那个特性,写过css的老师都晓得,用以造成梯形,比如画两个方形:

div {

width:100px;

height:100px;

background:red;

border-radius:100px;//border-radius:100%;

}

CSS3初体验之奇技淫巧

接着我们来看看它的语法:border-radius: [左上] [右上] [右下] [左下],于是我们来画两个半圆

div {

width:100px;

height:50px;

background:red;

border-radius:50px50px00;

}

CSS3初体验之奇技淫巧

那如果要画两个椭圆该怎么办呢?你会发现上面的语法貌似做不到了,只不过border-radius的值还有一种语法: x半径/y半径:

div {

width:100px;

height:50px;

background:red;

border-radius:50px/25px;

}

CSS3初体验之奇技淫巧

如果我要画半个椭圆,又要咋办呢?

div {

width:100px;

height:50px;

background:red;

border-radius:100%00100%/50%;

}

CSS3初体验之奇技淫巧

::after

这里拿个简单的例子来看,我们要画两个放大镜,如下图:

CSS3初体验之奇技淫巧

分析呵呵,那个放大镜可以由两个div组成,两个是黑色的圆环,两个是黑色把手(旋转45度)。因此我们就须要用两个div来实现吗?答案是NO,两个div也是可以的,我们可以借助::after来添加两个元素。同理如果须要三个div,我们还可以使用::before再添加两个元素。下面看呵呵代码:

div {

width:50px;

height:50px;

border-radius:50%;

border:5pxsolid#333;

position:relative;

}

div::after {

content:;

display:block;

width:8px;

height:60px;

border-radius:5px;

background:#333;

position:absolute;

right:-22px;

top:38px;

transform:rotate(-45deg);

}

attr和content

比如说我们要实现两个悬浮提示的功能。传统方法,使用title特性就

假如我们的html代码如下:

<div data-title=”hello, world”>hello…</div>

我们来看看实现那个插件的css代码:

div {

position:relative;

}

div:hover::after {

content:attr(data-title);//取到data-title特性的值

display:inline-block;

padding:10px14px;

border:1pxsolid#ddd;

border-radius:5px;

position:absolute;

top:-50px;

left:-30px;

}

当hover的时候,在元素尾部添加两个内容为data-title特性值的元素,因此就实现了hover显示的效用,如下图所示:

CSS3初体验之奇技淫巧

box-sizing

我们晓得,在标准盒子模型中,元素的总宽=content + padding + border + margin。 css中的盒子模型我们可能都晓得,但是那个盒子模型的特性可能没那么多人晓得,box-sizing特性就是用以重定义那个计算方式的,它有三个取值,分别是:content-box(默认)、border-box、padding-box

一般来说,假如我们须要有两个占宽200px、padding10px、border5px的div,经过计算,要这么定义样式。

div {

width:170px;//这里的宽度要使用200-10*2-5*2=170得到。

height:50px;

padding:10px;

border:5pxsolidred;

}

接着我们来使用呵呵box-sizing特性。

div {

box-sizing:border-box;

width:200px;//这里的宽度就是元素所占总宽度,不须要计算

height:50px;

padding:10px;

border:5pxsolidred;

}

linear-gradient

做活动页面的时候我们经常会碰到这样的市场需求:

顶部的中间一张大banner图片,接着整个区域的背景色要根据图片背景色渐变。就可以使用那个特性了。

div {

width:200px;

height:50px;

background:linear-gradient(toright,red,yellow,black,green);

}

CSS3初体验之奇技淫巧

是不是很有趣?只不过,linear-gradient还有更多有趣的功能,你可以根据下面的动图去领略:

CSS3初体验之奇技淫巧

你以为这就完了?等等,还有更强大的呢!repeating-linear-gradient,来领略:

CSS3初体验之奇技淫巧

linear-gradient还有更加强大的功能,比如说它可以给元素添加多个渐变,从而达到更NB的效用。

radial-gradient

上面的linear-gradient是线性渐变,那个特性是径向渐变。下面的代码实现了两个chrome的logo。

CSS3初体验之奇技淫巧

div.chrome {

width:180px;

height:180px;

border-radius:50%;

box-shadow:004px#999,002px#dddinset;

background:radial-gradient(circle,#4FACF50,#2196F328%,transparent28%),

radial-gradient(circle,#fff33%,transparent33%),

linear-gradient(-50deg,#FFEB3B34%,transparent34%),

linear-gradient(60deg,#4CAF5033%,transparent33%),

linear-gradient(180deg,#FF756B0,#F4433630%,transparent30%),

linear-gradient(-120deg,#FFEB3B40%,transparent40%),

linear-gradient(-60deg,#FFEB3B30%,transparent30%),

linear-gradient(0deg,#4CAF5045%,transparent45%),

linear-gradient(60deg,#4CAF5030%,transparent30%),

linear-gradient(120deg,#F4433650%,transparent50%),

linear-gradient(180deg,#F4433630%,transparent30%);

}

实现原理就是使用了多个渐变色放在div上,友协被遮住,视觉上就造成了想要的效用,是不是很强大!看了下图你就晓得只不过就是在div上加了很多个渐变。

CSS3初体验之奇技淫巧

box-shadow

上面的例子大都是对css3新特性的了解和重新认识,那个示例则是有关于软件系统的例子。

市场需求:我们要实现下面那个效用图(三个边框:黑色,绿色,红色):

CSS3初体验之奇技淫巧

解法一:假如没css3知识,我们可以做这样做:用三个div,分别设置边框,接着分别控制宽高和位置来达到那个效用。显然,很复杂,这里就不贴代码了。

解法二:现在我们有css3的知识了,借助box-shadow就可以轻松解决那个问题。先来看看它的语法:box-shadow: [x偏移] [y偏移] [阴影模糊宽度] [阴影宽度] [颜色],并且还能添加多个阴影,使用逗号隔开。当然你还可以继续增加,四重边框,五重边框……都不再是问题啦。另外,还能加梯形,阴影会贴紧内层div。

CSS3初体验之奇技淫巧

使用这种方法,有两个缺点就是,不支持虚线边框。

解法三: 使用outline(只能支持两重边框)使用这种方法的缺点就是,只能支持两层的边框,而且还不能根据容器的border-radius自动贴合。

CSS3初体验之奇技淫巧

总结

通过这段时间对css3的深入了解,发现css3真的很强大,科学研究起来还是挺有趣的,只有想不到,感觉没做不到。不过为了实现很酷炫的效用,可能须要编写大批的css代码,这个时候使用什么技术就须要我们自己来衡量了。

【今日微信公号推荐↓】

CSS3初体验之奇技淫巧

更多推荐请看值得高度关注的技术和设计社会公众号

其中推荐了包括技术设计极客 和 IT相亲相关的热门社会公众号。技术涵盖:Python、Web前端、Java、安卓、iOS、PHP、C/C++、.NET、Linux、数据库、运维、大数据、算法、IT职场等。点选《值得高度关注的技术和设计社会公众号》,发现精彩!

CSS3初体验之奇技淫巧

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务