CSS:斜角标签

1,906 阅读2分钟

我正在参加 码上掘金体验活动,详情:show出你的创意代码块

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第10天,点击查看活动详情

前言

斜角标签是前端toC开发常见的场景,其效果图大概如下:

image.png

中间的空盒子常为优惠券、商品等卡片,斜角的标签可能是折扣、售罄、补货等,今天就普及一下这类斜角标签的实现方式

思路

主要在卡片的盒子内新建一个长条的标签盒子,通过定位的方式调整位置,然后再通过变形transform: rotate(45deg),旋转45度角,超出卡片盒子的部分设置overflow:hidden;

代码实现

首先,创建卡片盒子:

 <div class="card"></div>
.card{
  width:100px;
  height:100px;
  border:1px solid #000;
  overflow: hidden; // 隐藏标签的超出部分
  position: relative;
}

设置大小边框等属性,设置position:relartive来作为定位锚点,设置超出隐藏;

接着,创建标签盒子,并设置样式:

 <div class="card">
   <div class="tag">售罄</div>
</div>
.tag{
  text-align: center; // 文本居中 
  position: absolute; // 绝对定位
  background-color: grey; // 背景色
  color: #fff;
  // 以下属性会影响斜边标签的显示
  width: 80%;
  height: 18px;
  line-height: 18px;
  top: 10px;
  left:40%;
  transform: rotate(45deg);
  border:1px solid #000;
}

这里要注意,旋转的中心默认是以中心旋转,这会导致转45度会出现显示不全、显示不出文本等情况,而修改transform-origin也是没用的,无论它以哪个点,只旋转的话都是会显示不全的;

所以需要调节其位置,配合width,让其出现在合理的位置,最好是根据父元素的大小来决定其位置和大小,这样即使父元素大小不确定也能正确出现在角落;

代码参考:

如果有更好的实现方式或者错误欢迎指出~