问题
我创建了一个完全使用 CSS 完成的下拉菜单,使用教程中显示的绝对定位方法。效果很好。在 Safari 中,它很慢、很迟钝,而且链接是间隔开的。
此下拉菜单在 Safari 以外的所有浏览器中都能完美运行。为什么?
<ul id="nav">
<li>
<a href="index.php">Home</a>
<ul>
<li><a href="about.php">About Us</a></li>
<li><a href="contact.php">Contact Us</a></li>
<li><a href="managed_services.php">Managed Services</a></li>
</ul>
</li>
<li>
<a href="malware_removal.php">Computer</a>
<ul>
<li><a href="malware_removal.php">Malware Removal</a></li>
<li><a href="diagnostic.php">Diagnostic</a></li>
<li><a href="backup_and_restore.php">Backup & Restore</a></li>
<li><a href="data_recovery.php">Data Recovery</a></li>
<li><a href="phone_accessories.php">Phone Accessories</a></li>
</ul>
</li>
<li>
<a href="surveillance.php">Security</a>
<ul>
<li><a href="surveillance.php">Surveillance</a></li>
<li><a href="security_systems.php">Security Systems</a></li>
</ul>
</li>
<li>
<a href="RTI.php">Home Automation</a>
<ul>
<li><a href="HAI.php">HAI</a></li>
<li><a href="RTI.php">RTI</a></li>
</ul>
</li>
<li>
<a href="munitio.php">Home Audio / Video</a>
<ul>
<li><a href="tv_installation.php">TV Installation</a></li>
<li><a href="wall_mounting.php">Wall Mounting</a></li>
<li><a href="sound_systems.php">Sound Systems</a></li>
<li><a href="home_theater.php">Home Theater</a></li>
<li><a href="munitio.php">Munitio Earphones</a></li>
</ul>
</li>
</ul>
CSS
/* Header */
#nav {
margin-left: 9%;
list-style: none;
font-weight: bold;
margin-bottom: 10px;
margin-top: 40px; /* Clear floats */
float: left;
width: 90%; /* Bring the nav above everything else--uncomment if needed.
position: relative;
*/
z-index: 5;
}
#nav li {
float: left;
margin-right: 2%;
}
#nav a {
display: block;
padding: 5px;
color: black;
background: none;
text-decoration: none;
font-size: 14px;
-webkit-transition: color 0.2s, text-shadow 0.3s;
-moz-transition: color 0.2s, text-shadow 0.3s;
-o-transition: color 0.2s, text-shadow 0.3s;
-ms-transition: color 0.2s, text-shadow 0.3s;
transition: color 0.2s, text-shadow 0.3s;
}
#nav a:hover {
color: white;
background: none;
text-decoration: none;
text-shadow: 0px 0px 3px #000;
}
/*---DROPDOWN ---*/
#nav ul {
z-index: 5;
background: none; /* Adding a background makes the dropdown work properly in IE7+. Make this as close to your page's background as possible (i.e. white page == white background). */
background: rgba(255,255,255,0); /* But! Let's make the background fully transparent where we can, we don't actually want to see it if we can help it... */
list-style: none;
width: 0px;
overflow: hidden;
color:white;
left: -9999px; /* Hide off-screen when not needed (this is more accessible than display: none;
*/
-webkit-transition: color 0.2s, text-shadow 0.3s;
-moz-transition: color 0.2s, text-shadow 0.3s;
-o-transition: color 0.2s, text-shadow 0.3s;
-ms-transition: color 0.2s, text-shadow 0.3s;
transition: color 0.2s, text-shadow 0.3s;
}
#nav ul li {
padding-top: 1px; /* Introducing a padding between the li and the a give the illusion spaced items */
color:white;
float: none;
}
#nav ul a {
white-space: nowrap; /* Stop text wrapping and creating multi-line dropdown items */
}
#nav li:hover ul {
/* Display the dropdown on hover */
left: 0; /* Bring back on-screen when needed */
overflow: hidden;
width: 150px;
-webkit-transition: width 0.2s;
-moz-transition: width 0.2s;
-o-transition: width 0.2s;
-ms-transition: width 0.2s;
transition: width 0.2s;
}
#nav li:hover a {
/* These create persistent hover states, meaning the top-most link stays 'hovered' even when your cursor has moved down the list. */
background: none;
margin-right: -10px;
text-decoration: none;
-webkit-transition: margin-right 1s;
-moz-transition: margin-right 1s;
-o-transition: margin-right 1s;
-ms-transition: margin-right 1s;
transition: margin-right 1s;
}
#nav li:hover ul a {
/* The persistent hover state does however create a global style for links even before they're hovered. Here we undo these effects. */
text-decoration: none;
width: 120px;
}
#nav li:hover ul li a:hover {
/* Here we define the most explicit hover states--what happens when you hover each individual link. */
background: #333;
width: 150px;
}