如何创建这个按钮形状CSS只?

时间:2017-01-20 23:55:00

标签: css css3 button

我很难回答如何使用CSS执行此按钮。最简单的方法是使用:使用右侧部分的背景图像,但是当涉及到悬停效果时这不是很好和干净。

我已经能够通过右边的蓝色箭头解决它,但这个“双箭头”让我发疯。

enter image description here

3 个答案:

答案 0 :(得分:3)

背景渐变可能吗?



!wget https://some.public.host/yourfile.jar -P  ${HOME}/data/libs

button {
  margin:1em;
  border:none;
  padding:0.25em 3em 0.25em 1em;
  text-align:left;
  background:
    linear-gradient(-120deg, transparent 1em, #0099C3 1.05em , #0099C3 1.5em, transparent 1.45em, transparent 2em, #0099C3 2.05em) top no-repeat,
    linear-gradient(300deg, transparent 1em, #0099C3 1.05em , #0099C3 1.5em, transparent 1.45em, transparent 2em, #0099C3 2.05em) bottom no-repeat ;
  background-size: 100% 50%;
  color:white
}




答案 1 :(得分:0)

这感觉有点笨拙但是有效。使用具有:before:after伪元素的单个元素来创建箭头。此演示使用max-width,可根据用途进行更改。然而,高度可能需要保持固定才能工作。

注意: V形符号(白色箭头)延伸到条形图的顶部/底部之外,并且会与其他元素重叠,因此您需要将此元素包含在另一个div中overflow: hidden或确保空间中的其他元素,以便重叠不会影响相邻元素。

.chevronlabel {
  background-color: #0099C3;
  max-width: 200px;
  height: 52px;
  display: inline-block;
  color: #ffffff;
  box-sizing: border-box;
  font-family: Arial;
  padding: 8px 30px 8px 12px;
  position: relative;
}

.chevronlabel:before {
  content: '';
  position: absolute;
  right: -13px;
  top: 0;
  width: 0;
  height: 0;
  border-top: 26px solid transparent;
  border-left: 13px solid #0099C3;
  border-bottom: 26px solid transparent; 
}

.chevronlabel:after {
  border-style: solid;
  border-color: #ffffff;
  border-width: 15px 15px 0 0;
  content: '';
  display: inline-block;
  height: 30px;
  width: 30px;
  position: absolute;
  top: 50%;
  right: -10px;
  transform: rotate(-45deg);
  vertical-align: top;
  transform: rotate(45deg) skew(20deg, 20deg) translate(-50%);
}
<div class="chevronlabel">
  Button Text and More Text
</div>

答案 2 :(得分:-1)

您可以使用CSS形状执行此操作。

另一种上帝方式是内联SVG。

进一步阅读:https://css-tricks.com/working-with-shapes-in-web-design/