百度前端笔试题目--css 实现一个带尖角的正方形
今天在牛客网上看到这道题,发现自己并不会,看来自己css都没怎么学习,也不怎么会用。看了下答案,不是很明白,也在网上搜集了一些资料和解法,感觉一些同学博客上也写了一些解法和拓展,所以就在这里借鉴一下咯。(参考地址:http://www.ithao123.cn/content-5672159.html)
实现图示的效果涉及到的知识主要有两点:一个是before、after伪元素,一个是border
1、before 和 after 都是css中的伪元素,通过给定一个属性content给元素添加新的内容
before:用来在元素前插入新内容。
after:用来在元素后面插入新内容。
(1)before 给元素添加内容实例:
<p>我</p>
如果给这个p元素设置一个before:
p:before{ content:"爱你"; }
这个p就变成了:我爱你,content属性的值就添加到了p元素内容的前面。
(2)after 给元素添加内容实例:
<p>我</p>
p:after{ content:"20岁了"; }
这个p就会变成:我20岁了
2、利用伪元素设置css样式,如题目中的尖角,题目只给出一个div,只能弄出左边的带边框正方形,右边的尖角怎么来的呢?那就可以靠这个伪元素来完成了。
思路解析:
(1)先把正方形画出来
1 #demo{ 2 width:100px; 3 height:100px; 4 background-color:#fff; 5 border: 2px #000 solid; 6 position: relative; 7 }
(2)通过before或者after变出一个尖角出来。放到正方形右上角去。
1)首先,我们复习一下border属性。
- border-width:
thin(细边框) medium (中等边框)thick(细边框) 10px(像素值)只有当边框样式不是 none 时才起作用
- border-style:
dotted (点状)solid(实线) double(双线) dashed(虚线);
- border-color:设置不同的颜色
2)boder实例:
- 一个边长为20px的正方形,设置border为20px,可得效果:
,html代码如下:
1 <html> 2 <head> 3 <title></title> 4 <style type="text/css"> 5 #demo{ 6 width:20px; 7 height:20px; 8 background-color:#fff; 9 border: 20px #000 solid; 10 11 } 12 </style> 13 </head> 14 <body> 15 <div > 16 17 </div> 18 </body> 19 </html>
- 我们可以根据border-left,border-right,border-top,border-bottom手动设置四个边框为不同颜色
,css代码如下:
-
1 #demo 2 { 3 width:20px; 4 height:20px; 5 background-color:#fff; 6 border-left: 20px pink solid; 7 border-right:20px red solid; 8 border-top:20px green solid; 9 border-bottom:20px blue solid; 10 }
#demo { width:0px; height:0px; background-color:#fff; border-left: 20px pink solid; border-right:20px red solid; border-top:20px green solid; border-bottom:20px blue solid; }