我希望 a#gnbii 与导航栏的左端对齐,并且
其余的链接在中心。
但我希望我的页面尽可能兼容调整窗口大小
所以我不喜欢使用边距/填充。
如果
可能。
结合 CSS flexbox 和 positioning 属性可以满足所有要求。
首先,向您的 a#gnbii 父容器添加一个 ID:
<li class="gnb" id="align-left"> /* NEW - ID added */
<a class="gnb" id="gnbii" href="home.html">
<img id="gnbii" src="../images/instagram icon/1.png" alt="aranpuzzle.ir" height="40px">
<img id="gnbii" src="../images/instagram icon/2.png" alt="aranpuzzle.ir" height="40px">
</a>
</li>
这是 CSS:
ul {
display: flex;
justify-content: center;
align-items: center;
position: relative;
}
#align-left {
position: absolute;
left: 2%;
}
演示:https://jsfiddle.net/6pmfc87h/3/
这是发生了什么......
ul 成为应用了display: flex 的弹性框。每个li 现在排成一排,这是 flexbox 子项(称为“flex items”)的默认行为。
justify-content: center 将子元素沿主轴居中。在这种情况下,水平。
align-items: center 沿横轴居中子元素。在这种情况下,垂直。
position: relative 为绝对定位建立最近的定位祖先。
position: absolute 将最后一个 li 移动到其最近定位的祖先的左边缘。
要了解更多关于 flexbox 的信息,请参考:A Complete Guide to Flexbox
要了解有关绝对位置的更多信息,请查看:MDN position
更新(基于 cmets;适用于较小的屏幕)
我希望它尽可能向右滑动而不是重叠...
好的,所以我们可以将white-space: nowrap 添加到ul,这样导航项始终保持在一行中。
然后声明一个媒体查询以在较小的屏幕上向右移动所有内容:
@media only screen and (max-width: 768px) {
ul { justify-content: flex-start; } /* note: site is RTL */
#align-left { position: static; }
}
更新的演示:https://jsfiddle.net/6pmfc87h/4/
...当没有更多空间可以向右滑动时,我更喜欢那样
资源管理器不允许用户调整窗口的宽度
更薄!
你确定这是你想要做的吗?有some JavaScript methods 设置浏览器窗口大小,但我不确定它们在所有浏览器中是否完全可靠。更重要的是,我认为这不符合最佳实践。在我看来,应该允许用户重新调整浏览器窗口的大小,无论浏览器本身允许多少。 [Learn more.]
作为网络开发人员,您最好专注于您拥有更多控制权的领域。你可以设置一个min-width 声明告诉浏览器你的元素不能变窄。或者,您可以使用媒体查询来更改内容以适应较小的屏幕。