2

我正在尝试仅使用 css 创建一个标签形状,使其看起来像:

在此处输入图像描述

我正在尝试跟踪但无法使用三角形区域的边框。

HTML:

<a href="#">Test</a>

CSS:

a{
    float: left;
    height: 35px;
    position:relative;  
    border: 1px solid red;
    border-right: none; 
    width: 100px;
} 

a:before{
    content: "";
    position: absolute;
    top: -1px;
    right: -18px;
    width: 0;
    height: 0;
    border-color: white white white red;
    border-style: solid;
    border-width: 19px 0 18px 18px; 
}

JSFiddle:http: //jsfiddle.net/Sac3m/

4

3 回答 3

7

你可以旋转一个正方形,虽然我怀疑结果会不会是很好的跨浏览器

修改后的代码:

a {
  float: left;
  height: 35px;
  position: relative;
  border: 1px solid red;
  border-right: none;
  width: 100px;
}

a:after {
  content: "";
  position: absolute;
  top: 4px;
  right: -13px;
  width: 25px;
  height: 25px;
  border: 1px solid red;
  border-left: none;
  border-bottom: none;
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  transform: rotate(45deg);
}
<a></a>

(最新的 IE、Firefox 和 Chrome 似乎还可以)


更新

如果您需要 IE8 支持,您可以尝试在(原始)红色三角形顶部放置一个白色三角形:

a {
  float: left;
  height: 36px;
  position: relative;
  border: 1px solid red;
  border-right: none;
  width: 100px;
}

a:before {
  content: "";
  position: absolute;
  top: -1px;
  right: -18px;
  width: 0;
  height: 0;
  border-color: white white white red;
  border-style: solid;
  border-width: 19px 0 19px 19px;
}

a:after {
  content: "";
  position: absolute;
  top: 0;
  right: -17px;
  width: 0;
  height: 0;
  border-color: transparent transparent transparent white;
  border-style: solid;
  border-width: 18px 0 18px 18px;
}
<a></a>

于 2013-04-16T08:15:37.663 回答
0

下面的代码有助于创建标签形状。它适用于所有主流浏览器。

#swc {
  position: relative;
  margin: 0 5px 0 10px;
  display: inline-block;
  height: 66px;
  padding: 0 35px 0 20px;
  font-size: 25px;
  line-height: 65px;
  cursor: pointer;
  font-weight: 100;
  margin: 20px 25px;
  background: #f3f3f3;
  transition: background 0.3s;
}

#swc:after {
  position: absolute;
  content: "";
  right: -19px;
  width: 1px;
  height: 0px;
  border-left: 18px solid #f3f3f3;
  border-top: 33px solid transparent;
  border-bottom: 33px solid transparent;
  transition: border 0.3s;
}

#swc:hover {
  background: green;
  color: #ffffff;
}

#swc:hover:after {
  border-left-color: green;
}
<span class="pricetag-right" id="swc">Tag Content!</span>

于 2016-12-27T12:38:23.280 回答
0

我们有一个稍微不同的实现,它会产生圆角。这使用了一个旋转 45° 的圆角正方形。

.tag {
  display: inline-block;
  border-width: 1px;
  border-style: solid;
  border-color: #c8d7f2 transparent #c8d7f2 #c8d7f2;
  border-radius: .25em 0 0 .25em;
  padding: 0.1em 0.6em 0.1em 0.3em;
  background-color: #e5ecf9;
  line-height: 1.2em;
}

.tag:after {
  content: "\25CF";
  position: absolute;
  display: inline-block;
  height: 1.2em;
  width: 1.17em;
  transform: rotate(45deg);
  color: white;
  text-indent: 0.3em;
  line-height: 1em;
  text-shadow: 0 0 1px #333;
  background-color: #e5ecf9;
  border-radius: 0.33em 0.33em 0.33em 1em;
  border-width: 1px;
  border-style: solid;
  border-color: #c8d7f2 #c8d7f2 transparent transparent;
}
<h1 class="tag">my-tag</h1>

有几点需要注意:

  1. 正方形包含一个圆形标点符号。要调整它,您可以使用 line-height 和 text-indent。

  2. 正方形的边框需要设置为透明色,宽度为 1px。如果你不这样做,其他边框(可见的)会从 1px 到 0px 逐渐变细。

  3. 他的作品非常好,几乎是像素级的,但它在 Chrome 和 Firefox 中的渲染确实略有不同。我试图让它在透明背景下工作,但你需要某种颜色来掩盖正方形与标签相遇的时髦。它不是完美。

这样做的好处是它可以作为一个类应用,并且可以用于 H1-H6 或 p 标签。

于 2020-08-13T21:03:00.587 回答