为什么导航栏按钮不居中?

时间:2016-12-01 21:21:14

标签: html css web

我有代码there 我的问题是,为什么不同页面的按钮不居中?当网站最小化时,这一点就更加明显了。

nav.stroke ul li a,    
nav.fill ul li a {    
position: relative;
}
nav.stroke ul li a:after,
nav.fill ul li a:after {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
  width: 0%;
  content: '.';
  color: transparent;
  background: #aaa;
  height: 1px;
}
nav.stroke ul li a:hover:after {
  width: 100%;
}

nav.fill ul li a {
  transition: all 2s;
}

nav.fill ul li a:after {
  text-align: left;
content: '.';
 margin: 0;
  opacity: 0;
}
nav.fill ul li a:hover {
  color: #fff;
  z-index: 1;
}
nav.fill ul li a:hover:after {
  z-index: -10;
  animation: fill 1s forwards;
-webkit-animation: fill 1s forwards;
  -moz-animation: fill 1s forwards;
  opacity: 1;
}

h1,h3 {
  text-align: center;
  color: white;
}
li{
  list-style-position: inside;
  display: inline;
  padding-left: 12px;
}

a{
 padding: .2em .1em;
color:grey;
  background-color: ;
}


}
.xy{
  margin-top: 75px;
}
h1{
  font-size: 45px;
}
h3{
  font-size: 23px;
}
body{
  background-color: #451255;
}
nav {
  width: 70%;
  margin: 0 auto;
  background: #fff;
  padding: 15px;
  box-shadow: 0px 5px 0px #dedede;
  position: center;
}
nav ul {
  list-style: none;
  text-align: center;
}
nav ul li {
  display: inline-block;
}
nav ul li a {
  display: block;
  padding: 15px;
  text-decoration: none;
  color: #aaa;
  font-weight: 800;
  text-transform: uppercase;
  margin: 0 10px;

}
nav ul li a,
nav ul li a:after,
nav ul li a:before {
  transition: all .5s;
}
nav ul li a:hover {
  color: #555;
}

@-webkit-keyframes fill {
  0% {
    width: 0%;
    height: 1px;
  }
  50% {
    width: 100%;
    height: 1px;
  }
  100% {
    width: 100%;
    height: 100%;
    background: #451255;
  }
}
.btns,
.fill{
    margin: auto;
    position: center;
    display: block;
}

所以,我有那个代码,你可以在链接上看到它的样子。我的问题是它没有居中。当我最小化它时,它没有居中的事实更加明显。我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:1)

像@junkfoodjunkie已经说过,它是关于基本的CSS重置。 为什么?元素得到初始CSS集,这是正在发生的事情: enter image description here

就像你可以看到的那样,你的菜单项目(蓝色部分)已经居中,但你有初始-webkit-padding-start: 40px;(绿色部分)并且它与padding-left: 40px;一样,它不会少于<ul>从您的菜单中选择40px,这就是为什么看起来菜单的项目没有居中/坚持到右边,所以为了修复它,您需要覆盖<li>元素的值。 您还将padding-left: 12px;元素设置为.fill > ul {padding-left: 0;},因此菜单的项目不会完美居中。如果您不打算使用某些CSS reset,请将Append String添加到您的CSS中。

答案 1 :(得分:0)

您没有重置或取消默认行为。您在margin上没有定义padding<ul>,并且您还没有重置CSS,所以有一个默认的填充和边距搞乱。将margin: 0; padding: 0;放在<ul>上即可。

或者,只需进行完全残酷的重置:https://jsfiddle.net/efv8x1x2/1/

已添加

* {
margin: 0;
padding: 0;
}

到样式表的开头,瞧,居中。