如何将三个点均匀地分隔为一个瘦汉堡菜单图标?

时间:2019-01-11 14:10:20

标签: html css dropdown

我希望代码显示3个小节,并且3个小点最终成为下拉选项。由于某些原因,三个点中的第一个不希望正确地隔开。

#dropdown {
  background: #3f51b5;
  padding: 30px;
  margin: 0px;
}

#dot {
  width: 5px;
  height: 5px;
  background: white;
  border-radius: 50%;
  float: right;
}

#bar {
  width: 25px;
  height: 3px;
  background: white;
  margin: 5px;
}
<div id="dropdown">
  <div id="dot"></div>
  <div id="bar"></div>
  <div id="dot"></div>
  <div id="bar"></div>
  <div id="dot"></div>
  <div id="bar"></div>
</div>

返回图片:

image

3 个答案:

答案 0 :(得分:7)

这对浮点数很难。 可能的解决方案是将点和条包装在div内。 之后,您可以按照自己喜欢的样式放置这些环绕div。 我在以下代码段中使用了flexbox。

#dropdown {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: #3f51b5;
  padding: 30px;
  margin: 0px;
}

.dot {
  width: 5px;
  height: 5px;
  margin: 5px;
  background: white;
  border-radius: 50%;
}

.bar {
  width: 25px;
  height: 3px;
  background: white;
  margin: 5px;
}
<div id="dropdown">
  <div>
    <div class="bar"></div>
    <div class="bar"></div>
    <div class="bar"></div>
  </div>
  <div>
    <div class="dot"></div>
    <div class="dot"></div>
    <div class="dot"></div>
  </div>
</div>

p.s .:您应该使用关键字class代替id来重复元素。这可能仍然有效,但是被认为是不良做法,并且可能会破坏使用该id的javascript实现。

答案 1 :(得分:3)

您可以轻松地为每个元素添加一个元素:

#dropdown {
  background: #3f51b5;
  padding: 10px 50px;
  overflow:hidden;
}

#dot {
  width: 10px;
  height: 30px;
  background: 
   radial-gradient(5px 5px at center, white 57%, transparent 61%) top/10px 10px;
  float: right;
}

#bar {
  width: 25px;
  height: 22px;
  margin: 4px 0;
  background: 
    linear-gradient(#fff,#fff) top/100% 3px,
    linear-gradient(#fff,#fff) center/100% 3px,
    linear-gradient(#fff,#fff) bottom/100% 3px;
  background-repeat:no-repeat;
  float:left;
}
<div id="dropdown">
  <div id="bar"></div>
  <div id="dot"></div>
</div>

这是另一个想法:

#dropdown {
  background: #3f51b5;
  padding: 10px 50px;
  overflow:hidden;
}

#dot {
  width: 5px;
  height: 5px;
  background:#fff;
  box-shadow:
    0 10px 0 #fff,
    0 20px 0 #fff;
  border-radius:50%;
  float: right;
}

#bar {
  width: 25px;
  height: 23px;
  padding:7px 0;
  margin: 4px 0;
  border-top:3px solid #fff;
  border-bottom:3px solid #fff;
  background:#fff content-box;
  float:left;
  box-sizing:border-box;
}
<div id="dropdown">
  <div id="bar"></div>
  <div id="dot"></div>
</div>

也与伪元素类似:

#dropdown {
  background: #3f51b5;
  padding: 10px 50px;
  overflow:hidden;
}

#dot {
  width: 5px;
  height: 5px;
  margin: 15px 0;
  background:#fff;
  border-radius:50%;
  float: right;
  position:relative;
}
#dot:before,
#dot:after{
  content:"";
  position:absolute;
  height:inherit;
  width:100%;
  left:0;
  background:inherit;
  border-radius:inherit;
  top:-8px;
}
#dot:after {
  bottom:-8px;
  top:auto;
}
#bar {
  width: 25px;
  height: 3px;
  margin: 15px 0;
  background:#fff;
  float:left;
  box-sizing:border-box;
  position:relative;
}
#bar:before,
#bar:after{
  content:"";
  position:absolute;
  height:inherit;
  width:100%;
  left:0;
  background:inherit;
  top:-8px;
}
#bar:after {
  bottom:-8px;
  top:auto;
}
<div id="dropdown">
  <div id="bar"></div>
  <div id="dot"></div>
</div>

答案 2 :(得分:0)

如果要检查第一个特定点,请使用类似的内容

#dropdown div:first-child { 
  position:relative;
  top:4px
}