如何利用border属性制作小三角形

方式1 使用伪类

利用border的属性 border-style, border-color, border-width, border-top-width等属性,在伪类上制作三角形,当然为了将三角形放到合适的地方,会用到绝对定位的知识,总的来说就3个技巧:

  1. border
  2. 伪类after, before
  3. 绝对定位

下面以向上的三角形为例:

// html
<div class="caret">向上的三角形</div>
// css (sass表示)
body
  padding: 50px

.caret
  width: 150px
  height: 40px
  background-color: #ad3e32
  position: relative
  // 下面属性辅助作用,将字体居中用的
  display: flex
  justify-content: center
  align-items: center
  color: #fff

  &:after
    content: " "
    width: 0
    height: 0
  // 伪类使用绝对定位
    // 利用top left 将三角形移动到想要的地方
    position: absolute
  // 这里是border-width 的2倍上移
    top: -16px
    left: 50%
    border-style: solid
    border-color: transparent
    // 这个决定三角形的朝向
    border-bottom-color: #ad3e32
    border-width: 8px
  margin-left: -8px
  


其余的几个朝向就是改变上面的一些标注的属性,具体demo codepen:

codepen 三角形demo

方式2 使用inherit属性和伪类,css3 transform属性

这个效果和上面的效果有所不同,这个会给提示框添加一个外边框,这个是上面方法实现不了的。

这个效果是在css揭秘这本书上看到的,原来的实现方式是使用 :before + :after的方式,但是效果并不理想。

.tooltip {
  position: relative;

  &:before {
    content: "";
    position: absolute;
    padding: 4px; // 利用padding值给伪元素添加宽高
    top: -.4em;
    left: 1em;
    background-color: inherit; // 继承父元素的背景色
    border: inherit; // 继承父元素的边框属性
    border-bottom: 0;
    border-right: 0;
    transform: rotate(45deg);
  }
}

利用transform和inherit属性制作triangle三角形 -- codepen

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 各种纯css图标 CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出。直接用CSS3画出这些图形,要比...
    剑残阅读 13,310评论 0 8
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 5,950评论 0 2
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 6,889评论 0 11

友情链接更多精彩内容