当点击响应式导航按钮时,文本不对齐
Text misaligned when the responsive navigation button is clicked
我只是在测试由W3Schools提供的响应式顶部导航示例,我对内部样式表做了一个小的修改,所以文本Home
将移动到菜单的中心,当我点击导航按钮时它不对齐。
为什么会发生这种情况,如何解决这个问题?
<!DOCTYPE html>
<html>
<head>
<style>
body {
margin: 0;
}
ul.topnav {
text-align: center;
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
ul.topnav li {
display: inline-block;
text-align: center;
}
ul.topnav li a {
display: inline-block;
color: #f2f2f2;
text-align: center;
text-decoration: none;
transition: 0.3s;
padding: 14px 16px;
font-size: 17px;
}
ul.topnav li a:hover {
background-color: #555;
}
ul.topnav li.icon {
display: none;
}
@media screen and (max-width: 680px) {
ul.topnav li:not(:first-child) {
display: none;
}
ul.topnav li.icon {
float: right;
display: inline-block;
}
}
@media screen and (max-width: 680px) {
ul.topnav.responsive {
position: relative;
}
ul.topnav.responsive li.icon {
position: absolute;
right: 0;
top: 0;
}
ul.topnav.responsive li {
float: none;
display: inline;
}
ul.topnav.responsive li a {
display: block;
text-align: center;
}
}
</style>
</head>
<body>
<ul class="topnav" id="myTopnav">
<li><a class="active" href="#home">Home</a>
</li>
<li><a href="#news">News</a>
</li>
<li><a href="#contact">Contact</a>
</li>
<li><a href="#about">About</a>
</li>
<li class="icon">
<a href="javascript:void(0);" style="font-size:15px;" onclick="myFunction()">☰</a>
</li>
</ul>
<div style="padding-left:16px">
<h2>Responsive Topnav Example</h2>
<p>Resize the browser window to see how it works.</p>
</div>
<script>
function myFunction() {
var x = document.getElementById("myTopnav");
if (x.className === "topnav") {
x.className += " responsive";
} else {
x.className = "topnav";
}
}
</script>
</body>
</html>
就像我在评论中说的,问题是因为你的li.icon
在position: relative
到position: absolute
之间切换
你必须把它修改为position:absolute
<!DOCTYPE html>
<html>
<head>
<style>
body {
margin: 0;
}
ul.topnav {
text-align: center;
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
ul.topnav li {
display: inline-block;
text-align: center;
}
ul.topnav li a {
display: inline-block;
color: #f2f2f2;
text-align: center;
text-decoration: none;
transition: 0.3s;
padding: 14px 16px;
font-size: 17px;
}
ul.topnav li a:hover {
background-color: #555;
}
ul.topnav li.icon {
display: none;
}
@media screen and (max-width: 680px) {
ul.topnav li:not(:first-child) {
display: none;
}
ul.topnav li.icon {
display: inline-block;
position: absolute;
right: 0;
}
}
@media screen and (max-width: 680px) {
ul.topnav.responsive {
position: relative;
}
ul.topnav.responsive li.icon {
position: absolute;
right: 0;
top: 0;
}
ul.topnav.responsive li {
float: none;
display: inline;
}
ul.topnav.responsive li a {
display: block;
text-align: center;
}
}
</style>
</head>
<body>
<ul class="topnav" id="myTopnav">
<li><a class="active" href="#home">Home</a>
</li>
<li><a href="#news">News</a>
</li>
<li><a href="#contact">Contact</a>
</li>
<li><a href="#about">About</a>
</li>
<li class="icon">
<a href="javascript:void(0);" style="font-size:15px;" onclick="myFunction()">☰</a>
</li>
</ul>
<div style="padding-left:16px">
<h2>Responsive Topnav Example</h2>
<p>Resize the browser window to see how it works.</p>
</div>
<script>
function myFunction() {
var x = document.getElementById("myTopnav");
if (x.className === "topnav") {
x.className += " responsive";
} else {
x.className = "topnav";
}
}
</script>
</body>
</html>
您的ul。topnav李。
<!DOCTYPE html>
<html>
<head>
<style>
body {
margin: 0;
}
ul.topnav {
text-align: center;
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
ul.topnav li {
display: inline-block;
text-align: center;
}
ul.topnav li a {
display: inline-block;
color: #f2f2f2;
text-align: center;
text-decoration: none;
transition: 0.3s;
padding: 14px 16px;
font-size: 17px;
}
ul.topnav li a:hover {
background-color: #555;
}
ul.topnav li.icon {
display: none;
}
@media screen and (max-width: 680px) {
ul.topnav li:not(:first-child) {
display: none;
}
ul.topnav li.icon {
position: absolute;
top: 0;
right: 0;
display: inline-block;
}
}
@media screen and (max-width: 680px) {
ul.topnav.responsive {
position: relative;
}
ul.topnav.responsive li {
float: none;
display: inline;
}
ul.topnav.responsive li a {
display: block;
text-align: center;
}
}
</style>
</head>
<body>
<ul class="topnav" id="myTopnav">
<li><a class="active" href="#home">Home</a>
</li>
<li><a href="#news">News</a>
</li>
<li><a href="#contact">Contact</a>
</li>
<li><a href="#about">About</a>
</li>
<li class="icon">
<a href="javascript:void(0);" style="font-size:15px;" onclick="myFunction()">☰</a>
</li>
</ul>
<div style="padding-left:16px">
<h2>Responsive Topnav Example</h2>
<p>Resize the browser window to see how it works.</p>
</div>
<script>
function myFunction() {
var x = document.getElementById("myTopnav");
if (x.className === "topnav") {
x.className += " responsive";
} else {
x.className = "topnav";
}
}
</script>
</body>
</html>
http://codepen.io/twotoan/pen/zKaBzK 这就是你想要达到的目标吗?
相关文章:
- 为什么文本对齐:对;工作不正常
- fabric.js中的文本对齐方式未按预期工作
- 如何在使用 UIWebView 编辑 HTML 内容时正确调整输入语言更改 (LTR/RTL) 的文本对齐方式
- 使用绝对css将图像与正在换行的文本对齐
- IE9中的文本对齐问题
- 文本对齐:在动态内联块
标记上居中不起作用
- iFrame 文本对齐方式
- 文本对齐不起作用
- 更改文本对齐方式 更改语言后
- 文本对齐:居中和边距:0自动不适用于绝对定位的元素
- 如何在使用文本对齐时调整图像大小并保持图像映射坐标:居中
- 如何对javascript ALERT进行文本对齐
- 将彩色带置于图像/标签+图像/文本对齐方式之上->JavaScript Titanium移动应用程序
- 在Angular JS中使用移动视图时,表单元格中不会出现文本对齐
- CK编辑器文本对齐按钮
- PHP:如何使用simple_html_dom解析器将CSS文本对齐属性添加到元素的现有内联样式属性中
- CK编辑器文本对齐工具栏按钮
- AngularJS ui网格文本对齐
- 根据语言的不同,使用jQuery在左右文本对齐之间切换
- 长度未知的文本对齐