[前端CSS高频面试题]如何画0.5px的边框线(详解)

简介: [前端CSS高频面试题]如何画0.5px的边框线(详解)

思路

               首先  直接这样设置


 border: 0.5px solid red;

               0.5px的边框,肯定是不对的,边框大小会向上取整。


           box-shadow阴影实现的思路

                     既然border不能设置小数的边框,那我们能不能找一个属性有相似的效果来替代它呢,当然可以,我们可以用box-shadow属性用阴影达到0.5px的边框效果,box-shadow阴影属性是允许小数值的,我们可以用它达到单条边框和四条边框。


            ::after定位伪类实现的思路

               直接设置伪类元素,设置指定的高度,通过定位来控制位置。


           transform 缩放实现的思路

                       我们可以设置任意大小的边框,改变中心点,通过缩放效果(找好倍率)来达成想要的结果。


           border-image: linear-gradient 边框线性渐变的思路

                        同样设置任意大小的边框,通过渐变属性改变一部分边框的颜色效果,比如将一部分边框融入背景,这样就能得到想要的效果。


答案

             


           box-shadow阴影实现的答案

                 


 </div><div>        div {</div><div>            box-sizing: border-box;</div><div>            background-color: blueviolet;</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            margin: 100px auto;</div><div>            /* border: 1px solid red; */</div><div>            box-shadow: 0px 0px 0px 0.5px green;</div><div>        }</div><div>    

 


       

          ::after定位伪类实现的答案

             


</div><div>        div {</div><div>            position: relative;</div><div>            box-sizing: border-box;</div><div>            background-color: blueviolet;</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            margin-top: 10px;</div><div>            /* box-shadow: 0px 0px 0px 0.5px green; */</div><div>        }</div><div>        div::after {</div><div>            position: absolute;</div><div>            content: "";</div><div>            background-color: red;</div><div>            width: 100%;</div><div>            height: 0.5px;</div><div>            bottom: 0px;</div><div>        }</div><div>    

 


             


           transform 缩放实现的答案

             


</div><div>        div {</div><div>            position: relative;</div><div>            box-sizing: border-box;</div><div>            background-color: blueviolet;</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            margin-top: 10px;</div><div>            /* box-shadow: 0px 0px 0px 0.5px green; */</div><div>        }</div><div>        div::after {</div><div>            position: absolute;</div><div>            content: "";</div><div>            width: 200%;</div><div>            height: 200%;</div><div>            border: 1px solid red;</div><div>            transform-origin: 0 0;</div><div>            transform: scale(0.5);</div><div>        }</div><div>    

 


             


           border-image: linear-gradient 边框线性渐变的答案    

               


 </div><div>        div {</div><div>            position: relative;</div><div>            box-sizing: border-box;</div><div>            background-color: blueviolet;</div><div>            width: 200px;</div><div>            height: 200px;</div><div>            margin-top: 10px;</div><div>            /* box-shadow: 0px 0px 0px 0.5px green; */</div><div>        }</div><div>        div::after {</div><div>            display: block;</div><div>            position: absolute;</div><div>            content: "";</div><div>            width: 100%;</div><div>            height: 1px;</div><div>            bottom: 0px;</div><div>            background-color: red;</div><div>            background: linear-gradient(to bottom, transparent 50%, red 50%);</div><div>        }</div><div>    

 




理解

           box-shadow阴影实现的理解

                       这种方法完全借助盒子阴影来达到指定效果,通过0.5px的阴影,让它达到类似0.5px边框的效果。


            ::after定位伪类实现的理解

                       这种方法直接设置0.5px的高度,高度同样允许小数px,我们生成了一个新元素,来改变它的高度,让它充当边框。


           transform 缩放实现的理解

                       利用缩放属性,我们设置一个1px边框,长度和宽度设置为被包裹子元素的两倍,当它缩小0.5的时候,就正好变成了子元素的宽高,1px的边框也缩小了一半变成了0.5px


           border-image: linear-gradient 边框线性渐变的理解    

                        这个其实是第二种属性的复杂版了,没有直接设置0.5px,而是设置了1px1上上面一半透明,来达到0.5px的边框效果,我们也可以直接设置1px的边框,然后同样透明0.5px,这个就不演示了。(这个属性有点复杂 后面会讲一下)


总结

                       第一二 四种没有使用border属性,通过其他属性来达到类似的边框效果,第三种使用了边框然后进行了效果的修改,第四种也有边框效果的变种写法。


相关文章
|
29天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
37 6
|
1月前
|
Web App开发 前端开发 JavaScript
揭秘!前端大牛们如何巧妙利用CSS3,打造炫酷视觉效果!
【10月更文挑战第31天】前端开发面临复杂布局的挑战,本文介绍了几种提升开发效率和代码质量的工具和技术。基础的HTML和CSS可以应对大部分布局需求,而Firefox开发者工具、VS Code、Vue、React等则能应对更复杂的布局,帮助开发者构建高性能、用户友好的网页应用。
32 4
|
2月前
|
前端开发 JavaScript
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
264 1
|
2月前
|
前端开发 容器
前端技术分享:利用CSS Grid布局实现响应式设计
【10月更文挑战第1天】前端技术分享:利用CSS Grid布局实现响应式设计
|
2月前
|
前端开发 UED 容器
前端技术分享:利用 CSS Grid 实现响应式布局
【10月更文挑战第1天】前端技术分享:利用 CSS Grid 实现响应式布局
76 2
|
2月前
|
Web App开发 前端开发
【前端基础篇】CSS基础速通万字介绍(上篇)2
【前端基础篇】CSS基础速通万字介绍(上篇)
28 2
|
2月前
|
Web App开发 前端开发
【前端基础篇】CSS基础速通万字介绍(上篇)3
【前端基础篇】CSS基础速通万字介绍(上篇)
25 1
|
2月前
|
缓存 前端开发 JavaScript
【前端基础篇】CSS基础速通万字介绍(上篇)1
【前端基础篇】CSS基础速通万字介绍(上篇)
21 1
|
2月前
|
前端开发 小程序 JavaScript
面试官:px、em、rem、vw、rpx 之间有什么区别?
面试官:px、em、rem、vw、rpx 之间有什么区别?
62 0
|
2月前
|
前端开发 JavaScript 容器
前端之CSS基础知识
前端之CSS基础知识
18 0