你的位置:首页 > 网页设计

[网页设计]谈谈一些有趣的CSS题目(一)


开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节。

解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉到生僻的 CSS 属性,赶紧去补习一下吧。

不断更新,不断更新,不断更新,重要的事情说三遍。

汇总在我的 Github ,发到博客希望得到更多的解法。

题目1、下面这个图形,只使用一个标签,可以有多少种实现方式:

假设我们的单标签是一个 div:

<div></div>

定义如下通用CSS

div{  position:relative;  width:200px;  height:60px;  background:#ddd;}

 

法一:border

这个应该是最最最容易想到的了

div{  border-left:5px solid deeppink;}

 

法二:使用伪元素

一个标签,算上 before 与 after 伪元素,其实算是有三个标签,这也是很多单标签作图的基础,本题中,使用伪元素可以轻易完成。

div::after{  content:"";  width:5px;  height:60px;  position:absolute;  top:0;  left:0;  background:deeppink;}

 

法三:外 box-shadow

盒阴影 box-shadow 大部分人都只是用了生成阴影,其实阴影可以有多重阴影,阴影不可以不虚化,这就需要去了解一下 box-shaodw 的每一个参数具体作用。使用 box-shaodw 解题

div{  box-shadow:-5px 0px 0 0 deeppink;}

 

法四:内 box-shadow

盒阴影还有一个参数 inset ,用于设置内阴影,也可以完成:

div{  box-shadow:inset 5px 0px 0 0 deeppink;}

 

法五:drop-shadow

drop-shadow 是 CSS3 新增滤镜 filter 中的其中一个滤镜,也可以生成阴影,不过它的数值参数个数只有 3 个,比之 box-shadow 少一个。

div{  filter:drop-shadow(-5px 0 0 deeppink);}

 

法六:渐变 linearGradient

灵活使用 CSS3 的渐变可以完成大量想不到的图形,CSS3 的渐变分为线性渐变和径向渐变,本题使用线性渐变,可以轻易解题:

div{  background-image:linear-gradient(90deg, deeppink 0px, deeppink 5px, transparent 5px);}

 

法七:轮廓 outline

这个用的比较少,outline (轮廓)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。这个方法算是下下之选。

div{  height:50px;  outline:5px solid deeppink;}div{  position:absolute;  content:"";  top:-5px;  bottom:-5px;  right:-5px;  left:0;  background:#ddd;}

上述就是我想到的 7 种方法,不排除有没想到的,具体实现可以戳这里看看:

codepen-单标签左边竖条的实现方式

 

所有题目汇总在我的 Github ,发到博客希望得到更多的解法。

到此本文结束,如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。