html - 如何按外观顺序在 CSS FlexBox 中按垂直顺序旋转(不堆叠)HTML block ?

标签 html css flexbox menu vertical-text

给定一个逻辑(搜索引擎可读)HTML 菜单,其中包含一个包裹在 <nav> 中的无序列表菜单,以元素 Home 开始,以元素 Blog 结束。我在纯 CSS 和 HTML 中尝试了几件事,但无法实现我想要的。

https://jsfiddle.net/6zt3gfp4/

我想要的是:

  1. 将整个垂直菜单自动对齐到屏幕的左上边缘。
    无论 <nav> 中包含的列表项的数量和/或长度如何!!

  2. 将每个带下划线的链接的可点击区域扩展到其整个蓝色 block 。
    为了便于在悬停和单击菜单项时使用。

  3. 理想情况下,我们应该抛开失败的开始,选择 FlexBox CSS 设计。
    也许这为我们所有人提供了更好的灵 active 来实现这一目标。那将是一个奖励!

enter image description here

nav {
  text-align:center;
  transform: rotate(-90deg) translateX(-240px) translateY(-100px);
  margin: 0;
  top: 0px;
  left: 0px;
  position: absolute;
}

nav li{
    display: inline-block;
    background-color: blue;
    height: 24px;
    line-height: 24px;
    vertical-align: middle;
    margin: 5px auto;
    padding: 1em;
}

nav li a{
  color: #fff;
}

nav li a:hover{
  background: black;
}

nav li.selected {
  background-color: purple;
}
<nav>
  <ul>
    <li><a href="#">Home</a></li>
    <li class="selected"><a href="#">Philosophy</a></li>
    <li><a href="#">Services</a></li>
    <li><a href="#">Products</a></li>
    <li><a href="#">Contact</a></li>
    <li><a href="#">Blog</a></li>
  </ul>
</nav>

最佳答案

不要太在意转换。使用 writing-mode 然后将应用于 li 的样式移动到 a 以使链接区域更大。

nav {
  top: 0px;
  left: 0px;
  position: absolute;
}
nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
nav li {
  background-color: blue;
  writing-mode: vertical-rl; /* */
  transform: scale(-1); /* */
  margin: 5px 0;
}
nav li a {
  color: #fff;
  padding: 1em;
  display: inline-block;
  line-height: 24px;
}
nav li a:hover {
  background: black;
}
nav li.selected {
  background-color: purple;
}
<nav>
  <ul>
    <li><a href="#">Home</a></li>
    <li class="selected"><a href="#">Philosophy</a></li>
    <li><a href="#">Services</a></li>
    <li><a href="#">Products</a></li>
    <li><a href="#">Contact</a></li>
    <li><a href="#">Blog</a></li>
  </ul>
</nav>

关于html - 如何按外观顺序在 CSS FlexBox 中按垂直顺序旋转(不堆叠)HTML block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72345189/

相关文章:

html - 浏览器会在 SVG XML 中呈现命名空间 HTML 吗?

html - 在一行中向左浮动两个 flex 元素,向右浮动一个元素

html - 使用 css 将输入表单移动到 body 中心

javascript - 在我的 DOM 中检测 span 标签

javascript - 如何在 VS 代码中的 JavaScript 字符串中语法高亮 HTML?

javascript - JQuery 为什么我的 array.every 不是一个函数?

javascript - CSS/JS/HTML : JS Function to rotate full page?

css - 如何使用css裁剪任意大小的图像

html - 无法滚动到容器溢出的 flex 元素顶部

javascript - 使用 CSS 显示 :flex (flexbox) and/or JavaScript to make adjustable page