Как я могу равномерно расставить три точки в виде иконки меню тощего гамбургера? - PullRequest
0 голосов
/ 11 января 2019

Я хочу, чтобы код отображал 3 бара, а 3 точки в конечном итоге стали выпадающими опциями. По какой-то причине 1-я из 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 голосов
/ 11 января 2019

Вы можете легко сделать это с одним элементом для каждого:

#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>
0 голосов
/ 11 января 2019

Используйте что-то вроде, если вы хотите проверить первую конкретную точку

#dropdown div:first-child { 
  position:relative;
  top:4px
}
0 голосов
/ 11 января 2019

Это трудно сделать с помощью поплавков. Возможное решение может заключаться в том, чтобы обернуть точки и столбцы внутри 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 для повторяющихся элементов. Это может все еще работать, но считается плохой практикой и может нарушить реализацию javascript, используя это id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...