而且由于 box-shadow可以分层,所以它是一个全能的好工具,要了解它来增强你的布局 。
但是,它将无法完全模仿 border 和 outline 提供的某些样式 。
放在一起 以下是一些可能需要使用 border 替代的实际情况 。
按钮边框 当为有边框和无边框的按钮提供样式时,真实的 border 成为一个常见的问题,以及它们排列在一起的场景 。
典型的解决方案通常是将无边框按钮的尺寸增加到等于 border-width 的大小
利用我们的新知识,另一种解决方案是使用 box-shadow 与 inset 关键字一起,将伪边框视觉上置于按钮内 。
请注意,你的 padding 必须大于 border-width,以防止文本内容的重叠 。
另外,也许您想在 :hover 或 :focus 上添加边框 。
使用真实的边框,你会从布局转变中产生不理想的视觉跳跃,因为边框会短暂地增加这些状态下的尺寸 。
在这种情况下,我们可以使用 box-shadow 来创建伪边框,这样就不会增加真实的尺寸,另外我们还可以使用 transition 对其进行动画处理 。
这是上述示例的简化代码:
button {transition: box-shadow 180ms ease-in;}button:hover {box-shadow: 0 0 0 3px tomato;}
确保可见焦点 对于可访问性,您可能不知道的一种情况是Windows高对比度模式(WHCM)的用户 。
在这种模式下,你提供的颜色会被剥离成一个缩小的高对比度调色板,并非所有CSS属性都是允许的,包括 box-shadow 。
一个实际的影响是,如果你在 :focus 时去掉了 outline,而用 box-shadow 代替,WHCM的用户将不再获得可见的焦点 。
要消除这种负面影响,您可以在 :focus 上应用透明的 outline:
button:focus {outline: 2px solid transparent;}
outline和box-shadow的陷阱 因为outline和box-shadow位于盒模型的边框之外,你可能会遇到的一个后果是让它们在视口的边缘下消失 。所以,如果你想让元素保持可见,你可能需要给元素添加 margin 或者给正文添加 padding 作为对策 。
它们的位置也意味着它们可以被 overflow: hidden 或使用 clip-path 等属性剪掉 。
额外提示:渐变边框 正如承诺的那样,这里有一个额外的提示——在我们已经讨论过的方法中——只有 border 可以做到 。
一个经常被遗忘的 border 相关属性是 border-image,当试图将它用于实际的图像时,其语法可能有点奇怪 。
但是它具有隐藏的功能——由于CSS渐变在技术上是图像,因此它还可以创建渐变边框:
这需要定义一个规则的边框宽度和样式(尽管它只显示为实体,而不考虑样式值),然后是 border-image 属性,它可以使用一个添加的渐变语法 。在渐变之后的数字是 slice 值,对于我们的渐变,我们可以简单地使用 1 来基本不改变渐变的大小/失真 。
推荐阅读
- 抖音怎么薅无门槛优惠券?抖音优惠券如何设置?
- 钉钉企业健康码如何设置
- 数码知识:微信来电提醒功能怎么设置设置来电提醒教程
- 不同电脑品牌进入bios的快捷键 联想超极本u410怎么进bios设置
- 开启ipad护眼模式的最佳方式 ipad护眼模式在哪里设置
- ios14画中画在哪 ios14画中画在哪设置
- macbook怎么恢复出厂设置 macbook恢复出厂设置的方法
- 电脑lp地址怎么设置 如何设置电脑lp地址
- 火荧苹果手机怎么设置 火荧苹果手机设置步骤
- 苹果呼叫转移设置不成功 苹果手机怎么设置呼叫转移