CSS3 - 相互划分,边框,三角形

时间:2013-11-07 14:14:27

标签: css css3 border gradient

我在尝试这样做时遇到了麻烦:

see this

我设法做了这样的事情:

display: table-cell;
vertical-align: middle;

background: rgb(245,245,245); /* Old browsers */
background: -moz-linear-gradient(top, rgba(245,245,245,1) 0%, rgba(230,230,230,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(245,245,245,1)), color-stop(100%,rgba(230,230,230,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(245,245,245,1) 0%,rgba(230,230,230,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(245,245,245,1) 0%,rgba(230,230,230,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(245,245,245,1) 0%,rgba(230,230,230,1) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(245,245,245,1) 0%,rgba(230,230,230,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f5f5f5', endColorstr='#e6e6e6',GradientType=0 ); /* IE6-9 */

表示文本的主容器,并且:

width: 0;
height: 0;
border-top: 25px solid transparent;
border-bottom: 25px solid transparent;
border-left: 40px solid #FEEDDD;
display: inline-block;

做三角形。然后我会将数字放在其中的绝对位置。

但是无法弄清楚我将如何为三角形“边框”做渐变,就像其他div一样,也不会给它一个白色的外边框......

提前致谢!

2 个答案:

答案 0 :(得分:1)

这绝对是可能的。

我不久前创建了一个带有渐变箭头的后退按钮。见this fiddle 所以只需改变方向,颜色并将其调整到你想要的大小,但我猜你已经有了这个想法。

HTML:

<button>Rejoignez le groupe</button>

CSS:

button {
  position: relative;
  display: inline-block;
  border: 1px solid #555555;
  margin: 0;
  font-size: 12px;
  color: inherit;
  cursor: pointer;
  height: 30px;
  padding: 0 10px;
  margin-right: 10px;
  font-weight: bold;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #888888));
  background: -webkit-linear-gradient(top, #eeeeee, #888888);
  background: -moz-linear-gradient(top, #eeeeee, #888888);
  background: -o-linear-gradient(top, #eeeeee, #888888);
  background: linear-gradient(top, #eeeeee, #888888);
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  -ms-border-radius: 4px;
  -o-border-radius: 4px;
  border-radius: 4px;
  text-shadow: rgba(255, 255, 255, 0.5) 0 1px 0;
  -webkit-box-shadow: rgba(255, 255, 255, 0.5) 0 1px 0;
  -moz-box-shadow: rgba(255, 255, 255, 0.5) 0 1px 0;
  box-shadow: rgba(255, 255, 255, 0.5) 0 1px 0;
}

button:after {
  clip: rect(14px, 14px, 28px, 1px);
  -webkit-transform: skewX(-35deg);
  -moz-transform: skewX(-35deg);
  -ms-transform: skewX(-35deg);
  -o-transform: skewX(-35deg);
  transform: skewX(-35deg);
  content: "";
  top: 0;
  position: absolute;
  height: 100%;
  width: 8%;
  right: -10px;
  border-right: inherit;
  background: inherit;
  -webkit-box-shadow: inherit;
  -moz-box-shadow: inherit;
  box-shadow: inherit;
}

button:before{
  clip: rect(1px, 14px, 14px, 1px);
  background: red;
  -webkit-transform: skewX(35deg);
  -moz-transform: skewX(35deg);
  -ms-transform: skewX(35deg);
  -o-transform: skewX(35deg);
  transform: skewX(35deg);
  content: "";
  top: 0;
  position: absolute;
  height: 100%;
  width: 8%;
  right: -10px;
  border-right: inherit;
  background: inherit;
  -webkit-box-shadow: inherit;
  -moz-box-shadow: inherit;
  box-shadow: inherit;
}

告诉我它是否太混乱,需要一些指导来改变方向,大小和颜色。

答案 1 :(得分:0)

虽然你可能会设法做这样的事情并且仍然在浏览器范围内保持适当的回落并且成功的结果......我希望你在尝试时能够拉出一大堆头发。我的建议是在Photoshop中制作一些背景图像并将这些项目分解为三个不同的元素

  1. 透明白色圆圈的元素,可以包含 步骤#

  2. 具有类的元素,用于应用橙色渐变背景的已完成步骤

  3. 另一个具有灰色渐变的单独类的元素

  4. 以这种方式做事你可以保持所有元素“正方形”,而不必担心支持三角形或圆形元素。并将您的文字叠加在适当的位置......

    我知道这可能不是你要求css3完成所有事情的方式,但我相信以这种方式做事可以让你保持简单&amp;贫