CSS Border 三角形阴影与多重边框的制作

CSS Border 三角形阴影与多重边框的制作

在现代网页设计中,CSS的强大功能让设计师和开发者能够创造出丰富多彩的视觉效果。本文将深入探讨如何利用CSS的border​属性制作三角形阴影以及多重边框效果。这些技巧不仅能提升页面的美观度,还能增强用户体验。

Border的基础知识

首先,我们需要了解border​的基本用法。border​的完整写法包括三个部分:border-width​、border-style​和border-color​。

  • border-width:边框宽度,不能为百分比,因为不会根据设备宽度改变。同理,outline​、text-shadow​和box-shadow​也不支持百分比。
  • border-style:边框样式,常用的有solid​(实线)、dashed​(虚线)和dotted​(点状线)。
  • border-color:边框颜色,默认颜色是元素的文本颜色,如果没有设置,则从父元素继承文本颜色。

边框可以根据方向单独设置,如border-top​、border-bottom​、border-left​和border-right​。每个方向还可以进一步细分为宽度、样式和颜色,例如border-top-width​、border-top-style​和border-top-color​。

此外,border-width​、border-style​和border-color​都可以采用组合写法,例如:

border-width: 10px 20px 30px 40px; /* 上 右 下 左 */
border-style: solid dashed dotted solid;
border-color: #f00 #0f0 #00f #0ff;
利用Border制作图形

边框的交界处是斜线,利用这一特性可以制作各种图形,特别是三角形。原理很简单:通过控制四个方向的边框颜色,可以实现三角形的制作。再通过调整宽度,可以制作出不同角度的三角形。

例如,制作一个三角形:

.triangle {
  border-style: solid;
  border-width: 30px 50px 60px 80px;
  border-color: #f00 #0f0 #00f #0ff;
  width: 0;
  margin: 100px;
}

为了更直观地理解,我们可以根据方向来写三角形:

.triangle {
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
  border-bottom: 10px solid #0ff;
}
小三角的阴影

制作三角形后,我们可能会需要为其添加阴影。直接使用box-shadow​会发现阴影并不符合预期,因为box-shadow​是为矩形元素设计的。

方法一:添加一个辅助元素,制作一个相同形状的三角形,设置较低层级,并应用滤镜效果。

<style>
  .note {
    margin: 100px;
    width: 200px;
    height: 80px;
    background: #f60;
    position: relative;
    border-radius: 5px;
    box-shadow: 0 0 10px 0px #000;
  }
  .triangle {
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 10px solid #f60;
    position: absolute;
    top: -10px;
    left: 50%;
    margin-left: -10px;
  }
  .filter {
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 10px solid #000;
    position: absolute;
    top: -10px;
    left: 50%;
    margin-left: -10px;
    z-index: -1;
    filter: blur(2px);
  }
</style>
<div class="wrapper">
  <div class="note">
    <span class="triangle"></span>
    <span class="filter"></span>
  </div>
</div>

方法二:使用filter​的drop-shadow​属性。

<style>
  .note {
    margin: 100px;
    width: 200px;
    height: 80px;
    background: #f60;
    position: relative;
    border-radius: 5px;
    filter: drop-shadow(0 0 6px #000);
  }
  .triangle {
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 10px solid #f60;
    position: absolute;
    top: -10px;
    left: 50%;
    margin-left: -10px;
  }
</style>
<div class="wrapper">
  <div class="note">
    <span class="triangle"></span>
  </div>
</div>
小三角的边框

同理,三角形的边框也可以通过添加辅助元素来实现。使用::after​和::before​伪元素可以简化代码。

<style>
  .note {
    margin: 100px;
    width: 200px;
    height: 80px;
    background: #f0f;
    position: relative;
    border-radius: 5px;
    border: 1px solid #000;
  }
  .note:after {
    content: "";
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 10px solid #f0f;
    position: absolute;
    top: -10px;
    left: 50%;
    margin-left: -10px;
  }
  .note:before {
    content: "";
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 10px solid #000;
    position: absolute;
    top: -11px;
    left: 50%;
    margin-left: -10px;
    z-index: -1;
  }
</style>
<div class="wrapper">
  <div class="note"></div>
</div>
Border-Radius圆角

border-radius​是CSS3中用于设置元素圆角的属性,支持四个角使用不同弧度,方向依次是左上、右上、右下、左下。

.test {
  width: 200px;
  height: 80px;
  margin: 100px;
  background: #f0f;
  border-radius: 15px 20px 35px 50px / 10% 25% 1em 50%;
}

最常见的是将值设为50%及以上,制作圆形。

多重边框

使用Outlineoutline​可以制作多重边框,但最多只能两层,且不支持弧形。

.test {
  margin: 100px;
  width: 200px;
  height: 80px;
  border: 10px solid #f0f;
  outline: 15px solid #f90;
  outline-offset: -25px;
}

使用Box-Shadowbox-shadow​可以制作多层边框,且支持弧形。

.test {
  margin: 100px;
  width: 200px;
  height: 80px;
  border: 10px solid #f0f;
  border-radius: 25% 30% 50% 29%;
  box-shadow: 0 0 0 10px #0f0, 0 0 0 20px #ff0, 0 0 0 10px #0ff inset;
}

通过以上方法,我们可以灵活运用CSS的border​属性,创造出丰富多彩的视觉效果,提升网页设计的层次感和用户体验。希望本文的分享能对你有所帮助,欢迎在实际项目中尝试和应用这些技巧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值