html - CSS 中的汉堡包渲染错误

标签 html css

谁能帮我翻转汉堡菜单的位置和左边的文字。尝试多次但失败了。我试过使用 Z-Index 来改变位置,但似乎没有帮助。 我网站上的最终图片如附件所示。任何帮助将不胜感激。

我还想将汉堡包从普通的条形图更改为圆形图标。如果我能针对我所描述的内容获得一些帮助,那就太好了。

代码:

.moreoptions{
    padding-top: 0px;
    float: left;
    position: relative;
    margin-bottom: -10px;
}

.outer {
    overflow: hidden;
    position: relative;
   
}



.middle {
    margin: 0 auto;
}

label {
    top: 10px;
    display: inline-block;
    padding: 7px 10px;
    background-color: transparent;
    cursor: pointer;
    margin: 10px;
    z-index: 3;
    position: fixed;
}

.bar {
    display: block;
    /*background-color: #38618c;*/
    background-color: black;
    width: 30px;
    height: 3px;
    border-radius: 5px;
    margin: 5px auto;
    transition: background-color 0.4s ease-in, transform 0.4s ease-in,
    width 0.4s ease-in;
}
<!--- Hamburger-->
<div class ="moreoptions">
    <h1> More Options </h1>
</div>
<label for="myInput">
    <span class="bar top"></span>
    <span class="bar middle"></span>
    <span class="bar bottom"></span>
</label>

Image Rendered

最佳答案

这里有几个答案:

  1. 只需重新排列您的 HTML,即可将图标置于左侧。请参阅下面的示例代码,了解如何重写 HTML。
  2. 不幸的是,z-index 无法按照您需要的方式工作。它只控制重叠元素的堆叠顺序,而不控制布局的流向。将您的“按钮”包裹在具有 float 或 flex 子元素的单个元素中是可行的方法。如果您的使用 float ,请不要忘记 clearfix。
  3. 我提供了一个最小示例,说明您可以如何从汉堡包图标过渡到关闭图标,see it on CodePen .要实现从汉堡包到圆形图标的变形(猜想中间有一个 x 吗?),有很多选择,最基本的是堆叠两个不同的图标,并转换 不透明度 使用 CSS 切换。
<nav class="navbar">
  <input type="checkbox" id="toggle" />
  <label for="toggle" class="btn menu--btn">
    <div class="icon icon--menu">
      <div></div>
      <div></div>
      <div></div>
    </div>
    More Options
  </label>
  <h1>Heading</h1>
</nav>
input[type="checkbox"] {
  display: none;
}

h1 {
  text-align: center;
}

.navbar {
  padding: 8px 16px;
  background-color: #f7f7f7;
}

.btn {
  display: inline-block;
  padding: 6px 12px 6px 8px;
  line-height: 24px;
  border-width: 1px;
  border-style: solid;
  border-color: #ccc;
  background-color: #fff;
  color: #333;
  cursor: pointer;
  clear: both;

  transition: color 150ms ease,
    background-color 150ms ease,
    border-color 150ms ease;
}

.btn:hover {
  background-color: #ddd;
  color: #000;
  border-color: #999;
}

input[type="checkbox"]:checked + .btn {
  color: #fff;
  background-color: #555;
  border-color: #000;
}

.icon {
  width: 24px;
  height: 24px;
  margin-right: 8px;
  box-sizing: border-box;
  float: left;
}

.icon--menu {
  padding: 6px 4px;
}

.icon--menu > div {
  height: 2px;
  background-color: currentColor;
  transition: background-color 150ms ease,
    transform 200ms ease,
    opacity 200ms linear;
}

.icon--menu > div:not(:last-child) {
  margin-bottom: 3px;
}

input[type="checkbox"]:checked + .btn .icon--menu > div:nth-child(1) {
  transform:  translateY(5px) rotate(-45deg);
}

input[type="checkbox"]:checked + .btn .icon--menu > div:nth-child(2) {
  opacity: 0;
}

input[type="checkbox"]:checked + .btn .icon--menu > div:nth-child(3) {
  transform:  translateY(-5px) rotate(45deg);
}

关于html - CSS 中的汉堡包渲染错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59591523/

相关文章:

html - 具有透明背景的全 Angular 垂直响应三 Angular 形

css - IE 下划线粗细不一致

html - 如何使 Bootstrap 3 列在不同高度时正确对齐?

javascript - 找到页面的第一个节点?

html - 当我使用媒体查询并从顶部更改位置时,图像悬停效果不起作用

css - 对鼠标悬停建议使用react

html - 是否可以创建一个 html 表,该表在列或行中流动并相应地完全用 CSS 包装?

javascript - javascript 中单选按钮的验证

css - JSF commandLink 与图像

html - 使列表项以特定方式相互重叠(顺序)