点击时改变CSS链接的宽度

3
我正在从头开始编写一个网页并且遇到了问题。我知道我正在使用iframes,但这不是重点,请将其排除在外。
除侧边栏中的链接之外,页面内容中的链接根据我的CSS/CSS3知识已经正确地进行了样式设置。但是,由于某种原因,当你点击链接时,它的宽度会改变,这是不希望出现的。然而,li、a:link和a:hover都设置了固定宽度,所以我不知道为什么会发生这种情况。当你按住鼠标按钮时,同样会出现这种情况。
<head>
    <title>BlackOwlStables</title>
    <style>
        body {
            background: rgba(112, 111, 111, 1);
            background: -moz-radial-gradient(center, ellipse cover, rgba(112, 111, 111, 1) 0%, rgba(5, 5, 5, 1) 100%);
            background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, rgba(112, 111, 111, 1)), color-stop(100%, rgba(5, 5, 5, 1)));
            background: -webkit-radial-gradient(center, ellipse cover, rgba(112, 111, 111, 1) 0%, rgba(5, 5, 5, 1) 100%);
            background: -o-radial-gradient(center, ellipse cover, rgba(112, 111, 111, 1) 0%, rgba(5, 5, 5, 1) 100%);
            background: -ms-radial-gradient(center, ellipse cover, rgba(112, 111, 111, 1) 0%, rgba(5, 5, 5, 1) 100%);
            background: radial-gradient(ellipse at center, rgba(112, 111, 111, 1) 0%, rgba(5, 5, 5, 1) 100%);
            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#706f6f', endColorstr='#050505', GradientType=1);
        }
        p {
            font-family:times, serif;
            color:#1a1a1a;
            padding:10px;
            margin:0;
            font-size:12px;
            letter-spacing:1px;
            text-align:justify;
        }
        h1, h2, h3 {
            font-family:times;
            letter-spacing:2px;
            font-size:30px;
            color:#1a1a1a;
            margin:0;
            padding:0;
        }
        iframe {
            width:650px;
            height:700px;
            border:1px solid #777777;
        }
        #content {
            width:860px;
            background:#888888;
            border:1px solid black;
            padding:20px;
            position:relative;
            margin:20px auto 0;
        }
        #body {
            margin-left:210px;
        }
        #side {
            width:200px;
            float:left;
            border-right:1px solid #666;
            position:absolute;
            top:10px;
            bottom:10px;
        }
        ul#navbar {
            list-style-type:none;
            margin:0;
            margin-left:-20px;
            margin-top:30px;
            padding:0;
        }
        #navbar li {
            text-align:center;
        }
        #navbar a:link, a:visited, a:active {
            transition: all 1s;
            display:inline-block;
            text-align:center;
            text-decoration:none;
            color:white;
            text-transform:uppercase;
            line-height:20px;
            font-size:10px;
            letter-spacing:3px;
            max-width:50px;
        }
        #navbar a:hover {
            transition:all 1s;
            background:#0a0a0a;
            max-width:180px;
        }
        #links {
            list-style-type:none;
            display:block;
            width:390px;
            margin:0 auto;
            padding:0;
        }
        #links li {
            text-align:center;
            display:inline-block;
            width:120px;
            overflow:hidden;
            margin:0;
        }
        #links a,a:link, a:active, a:visited, a:focus {
            transition: all 1s;
            display:inline-block;
            text-align:center;
            text-decoration:none;
            color:white;
            text-transform:uppercase;
            line-height:20px;
            font-size:10px;
            letter-spacing:1px;
            padding:0 2px;
            width:120px;
        }
        #links a:hover {
            transition:all 1s;
            background:#0a0a0a;
            width:120px;
        }
    </style>
</head>

<body>
    <div id="content">
        <div id="side">
            <ul id="navbar">
                <li><a href="#">Text</a>
                </li>
                <li><a href="#">Text</a>
                </li>
                <li><a href="#">Text</a>
                </li>
                <li><a href="#">Text</a>
                </li>
            </ul>
        </div>
        <div id="body">
        <h2>title hurr</h2>
            <p>Text</p>
            <ul id="links">
                <li><a href="/mog.html" target="box">M. Oceangaze</a></li
                ><li><a href="/lbh.html" target="box">L. Bloodhorn</a></li
                ><li><a href="/apv.html" target="box">A. Poisonvine</a></li
                ><li><a href="/vft.html" target="box">V. Flickertail</a></li
                ><li><a href="" target="box">-air-</a></li
                ><li><a href="" target="box">-water-</a></li
                >
            </ul>
            <iframe name="box">Your browser does not support iframes.</iframe>
            <p>2014 &copy; Brittny Baldwin</p>
        </div>
    </div>
</body>

我只想知道是什么原因导致了不需要的宽度变化,并且我该如何修复它。

编辑:不是导航栏。而是内部的#links UL。


2
如果你将问题简化并仅发布相关代码,那么你更有可能得到一个好的答案。在简化问题的过程中,你甚至可能会自己找到解决方案。 - Woodrow Barlow
3个回答

1
#navbar a:link, #navbar a:visited, #navbar a:active {
    ....
}

#links a, #links a:link, #links a:active, #links a:visited, #links a:focus {
     transition: all 1s;
     display:inline-block;
     text-align:center;
     word-wrap: normal;
     overflow-wrap: normal;
     white-space: nowrap;
     text-decoration:none;
     color:white;
     text-transform:uppercase;
     line-height:20px;
     font-size:10px;
     letter-spacing:1px;
     padding:0 2px;
     width:120px;
     margin-right:1px;
}

这就是我要找的。其他人都在看导航栏,而那不是我想表达的。谢谢。 - cirre

0

这是你在 #navbar a:link, a:visited, a:active 中设置的 max-width:50px;。更改或删除它,它就可以正常工作。

        #navbar a:link, a:visited, a:active {
            transition: all 1s;
            display:inline-block;
            text-align:center;
            text-decoration:none;
            color:white;
            text-transform:uppercase;
            line-height:20px;
            font-size:10px;
            letter-spacing:3px;
            max-width:50px; //<--THIS
        }

更新

正如showdev所指出的那样,max-width溢出的原因是因为您在一般情况下指定了a,请确保将它们限定在其父级范围内:

 #navbar a, #navbar a:link, #navbar a:active, #navbar a:visited, #navbar a:focus {

0

问题出在以下重叠的定义:

下面,您正在设置所有链接的已访问和活动状态:

#navbar a:link, a:visited, a:active { ... }

以下是设置所有链接的链接、激活、访问和焦点状态:

#links a, a:link, a:active, a:visited, a:focus { ... }

为了防止两个定义之间的重叠,您需要为每个状态指定父级。例如:

#navbar a:link, 
#navbar a:visited, 
#navbar a:active {
    ....
}

#links a, 
#links a:link, 
#links a:active, 
#links a:visited, 
#links a:focus {
    ....
}

工作示例


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接