html - 如何将导航栏固定到屏幕底部以进行移动查看>

在桌面上查看时,我目前有一个侧边栏作为导航栏。在桌面视图中,图标和文本并排显示,左侧为图标,右侧为文本。

我正在尝试获取它,以便当它折叠到移动视图时,侧边栏可以折叠到固定在屏幕底部的导航栏。图标位于文本的顶部和中心。

这是我目前拥有的:http://codepen.io/anon/pen/bpRgEJ

这是我试图定位在底部的代码:

@media (max-width:35em) {

    .main-nav {
        background: #ECC264;
        border-right: 1px solid #e5e5e5;
        position: fixed;
        margin: 0;
        left: 0;
        bottom: 0;
        height: 5em;
        width: 100%;
    }
}


它当前折叠到顶部导航栏中,并且图标和文本并排而不是上下。

任何帮助,将不胜感激,谢谢!

最佳答案

首先,我建议您按以下方式组织CSS:

1.-一般选择器和小节的规则将影响一切

2.-媒体查询仅影响特定宽度的行为。

因此,如果您需要一个始终固定的导航栏,但对于台式机位于屏幕的左侧,而移动设备位于页面的底部,则应编写以下内容:

.sidebar{ /* Every rule that will be always visible, something like colors, fonts, etc. */
  background-color: yellow; 
  position: fixed;
}

@media(min-width:35.1em){ /* Larger than mobile devices */
  .sidebar{
    left: 0;
    top: 0;
    bottom: 0;
    width: 40px;
  }
}

@media(max-width:35em){ /* Breakpoint only for mobile */
  .sidebar{
    bottom: 0;
    width: 100%;
  }
}


这样,您将避免处理不匹配的规则。

您的完整CSS应该如下所示:

.fa-2x {
    font-size: 2rem;
}
.fa {
    position: relative;
    text-align: center;
    vertical-align: middle;
    font-size: 2rem;
}

.main-nav {
    background: #ECC264;
    border-right: 1px solid #e5e5e5;
    position: fixed;
    z-index: 1000;
}
.main-nav>ul {
    margin: 0rem 0rem;
}

nav ul,
nav li {
    outline: 0;
    margin: 0;
    padding: 0;
}
.main-nav li:hover>a,
nav.main-nav li.active>a{
    color: #fff;
    background-color: #919191;
}

.main-nav .nav-text, .main-nav li>a{
  font-family: 'Roboto', sans-serif;
}

.main-nav li>a {
      border-collapse: collapse;
      border-spacing: 0;
      color: white;
      font-size: 1.03rem;
      text-decoration: none;
}

@media (min-width:35.1em) {
  .fa{
    display: table-cell;
    width: 5rem;
    height: 5rem;
  }

  .main-nav:hover,
nav.main-nav.expanded {
    width: 15em;
    overflow: visible;
}

  .main-nav{
    top: 0;
    bottom: 0;
    height: 100%;
    left: 0;
    width: 5rem;
    overflow: hidden;
    -webkit-transition: width .05s linear;
    transition: width .05s linear;
    -webkit-transform: translateZ(0) scale(1, 1);
  }

  .main-nav li {
    position: relative;
    display: block;
    width: 18rem;
  }
  .main-nav li>a {
      position: relative;
      display: table;
      -webkit-transform: translateZ(0) scale(1, 1);
      -webkit-transition: all .1s linear;
      transition: all .1s linear;
  }

  .main-nav .nav-text {
      position: relative;
      display: table-cell;
      vertical-align: middle;
      width: 10rem;
  }
}


@media (max-width:35em) {

    .main-nav {
        background: #ECC264;
        border-right: 1px solid #e5e5e5;
        position: fixed;
        margin: 0;
        left: 0;
        bottom: 0;
        /*height: 5em;*/
        width: 100%;
    }

  .main-nav ul{
    display: table;
    width: 100%; 
  }

    .main-nav li{
      float: left;
      width: 25%;
      list-style-type: none;
      text-align: center;
    }

  .main-nav a{
    display: block;
    padding: 5px;
    height: 74px;
  }

  .main-nav i, .main-nav span{
    display: block;
  }

  .main-nav span{
    font-size: 14px;
  }
}


您的示例在Codepen中进行了分叉: http://codepen.io/xWaZzo/pen/BKZpQE