我创建了一个简单的汉堡包菜单图标,我希望中间线比其他两个略短。这可以在没有创建多个divs
的情况下完成吗?我目前的解决方案是由多个box-shadows
, see my working example 完成的。
这就是我想要实现的目标:
我的CSS:
.menu-button:before {
content: "";
position: absolute;
left: 20px;
top: 20px;
width: 24px;
height: 4px;
background: #0e3c89;
box-shadow: 0 8px 0 0 #0e3c89, 0 16px 0 0 #0e3c89;
}
谢谢!
答案 0 :(得分:4)
这是一种使用尽可能少的标记来形成这种形状的方法:
width
/ height
创建元素。linear-gradient()
绘制中央栏并使用background-size
控制其大小,并使用.background-position
css属性进行定位。必要的HTML:
只有单个元素(可能有一个类):
<div class="menu-button"></div>
必要的CSS:
.menu-button {
// draws the central bar
background: linear-gradient(to right, #0e3c89, #0e3c89) no-repeat;
background-position: center left;
background-size: 85% 4px;
// draws the top / bottom bars
border: solid #0e3c89;
border-width: 4px 0;
height: 24px;
width: 28px;
}
<强>截图:强>
* {box-sizing: border-box;}
.menu-button {
background: linear-gradient(to right, #0e3c89, #0e3c89) no-repeat;
background-position: center left;
background-size: 85% 4px;
border: solid #0e3c89;
border-width: 4px 0;
height: 24px;
width: 28px;
}
&#13;
<div class="menu-button"></div>
&#13;
答案 1 :(得分:4)
是的,这可以在没有额外标记的情况下完成。这是你可以做到的一种方式:
.menu-button {
width: 20px;
height: 4px;
background: #0e3c89;
margin: 20px 0 0 20px;
}
.menu-button:before {
display: block;
content: "";
width: 28px;
height: 4px;
box-shadow: 0 -8px 0 0 #0e3c89, 0 8px 0 0 #0e3c89;
}
&#13;
<div class="menu-button"></div>
&#13;
答案 2 :(得分:0)
我的解决方案(使用flex):
HTML
<span class="hamburger"></span>
CSS
.hamburger {
display: flex;
align-items: center;
width: 40px;
height: 23px;
cursor: pointer;
border-top: 6px solid #000;
border-bottom: 6px solid #000;
}
.hamburger::before {
content: "";
width: 70%;
border-bottom: 6px solid #000;
}