2016-10-28 142 views
0

我试图与这些前提粘性页脚调整(用“translatedY”子元素)柔性页脚位置:在响应网站

  • 页脚位置:固定;用户添加
    • 多少孩子.SUB菜单项(可能会发生变化)
    • 媒体查询(即改变字体大小)
    • 的字体 - :
    • 其全局的高度,根据变化大小(其在视口单元归因“VW”)

有迹象表明,改变字体大小两个特定媒体实例:

  • 一个媒体查询设备/屏幕娄980px
  • ,一个用于设备/屏幕上方1550px

我想总是定位页脚在页面的底部,而focing其子元素出现在它上面。但是.sub菜单项的数量迫使页脚高度增长;就好像这还不够,视口宽度正在改变字体大小,这也会影响元素的高度。

h1 { 
 
font-size: 4vw; 
 
letter-spacing: 0.02em; 
 
} 
 
h2, h3, ul.sub-menu { 
 
\t font-size:2.3vw; 
 
\t line-height: 1.4em; 
 
\t color: black; 
 
} 
 

 
.footermenu { 
 
     bottom:0vh; 
 
     left:0vw; 
 
     position: fixed; 
 
     width: 95vw; 
 
     padding-right: 5vw; 
 
    \t height: 55vh; /*this seems to help but it is not reliable enough*/ 
 
    \t z-index:999; 
 
    } 
 

 
    .footermenu ul { 
 
     justify-content: space-between; 
 
     display: flex; 
 
    } 
 

 
    .menu-item > ul.sub-menu { 
 
     padding: 1vh; 
 
     text-align: center; 
 
     flex-direction: column; 
 
     opacity: 1; 
 
     transition: 0.5s ease-out; 
 
    } 
 

 
    .menu > .menu-item:not(:first-child):not(:last-child), .menu-item:not(:first-child):not(:last-child) > ul.sub-menu { 
 
     text-align: center !important; 
 
    flex: 0 1 33%; 
 
    -webkit-flex: 0 1 33%; 
 
    } 
 

 
    .menu > .menu-item:first-child, .menu-item:first-child > ul.sub-menu { 
 
     text-align: left !important; 
 
    flex: 0 1 33%; 
 
    -webkit-flex: 0 1 33%; 
 
    } 
 

 
    .menu > .menu-item:last-child, .menu-item:last-child > ul.sub-menu { 
 
     text-align: right !important; 
 
    flex: 0 1 33%; 
 
    -webkit-flex: 0 1 33%; 
 
    } 
 
    
 
    /* from here on I am translating the sub-menu items up */ 
 

 
    .footermenu .menu-item:not(:first-child):not(:last-child) > ul.sub-menu { 
 
    -webkit-transform: translateY(calc(-100% - 15vh)); 
 
     transform: translateY(calc(-100% - 15vh)); 
 
    } 
 

 
    .footermenu .menu-item:first-child > ul.sub-menu { 
 
    -webkit-transform: translateY(calc(-100% - 15vh)); 
 
     transform: translateY(calc(-100% - 15vh)); 
 
    } 
 

 
    .footermenu .menu-item:last-child > ul.sub-menu { 
 
    -webkit-transform: translateY(calc(-100% - 15vh)); 
 
     transform: translateY(calc(-100% - 15vh)); 
 
    } 
 

 
@media screen and (max-width: 980px) { 
 
     \t h1 \t { 
 
      \t font-size:6vw; 
 
    \t \t letter-spacing: 0.02em; 
 
     \t \t } 
 
     \t h2, h3, ul.sub-menu a { 
 
    \t \t font-size:3.6vw; 
 
    \t \t line-height: 1.2em; 
 
    \t \t color: black; 
 
    \t \t } 
 
    
 
    \t 
 
    \t #content { 
 
    \t \t margin: auto; 
 
    \t \t width: 68vw 
 
    \t \t margin-top: 25vh; 
 
    \t \t } 
 
    
 
    } 
 
@media screen and (min-width: 1550px) { 
 
     \t h1 \t { 
 
      \t font-size:3.5vw; 
 
       letter-spacing: 0.02em; 
 
     \t \t } 
 
     \t h2, h3, ul.sub-menu a { 
 
    \t \t font-size:2.3vw; 
 
    \t \t line-height: 1.2em; 
 
    \t \t color: black; 
 
    \t \t } 
 
    \t .post .entry-content { 
 
    \t \t margin-top: 1.5em; 
 
    \t \t text-align:left; 
 
    \t \t -webkit-column-count:1; /* Chrome, Safari, Opera */ 
 
     \t \t -moz-column-count: 1; /* Firefox */ 
 
     \t \t column-count: 1; 
 
    \t \t } 
 
    \t .footermenu { 
 
    \t \t z-index:999; \t \t 
 
    \t \t height: 18vh!important; /*I am trying to fix the problem like this but as said before this is not safe */ 
 
    \t \t } 
 
     .post .entry-content { 
 
    \t -webkit-column-count: 3; /* Chrome, Safari, Opera */ 
 
     \t -moz-column-count: 3; /* Firefox */ 
 
     \t column-count: 3; 
 
    \t } \t 
 
    \t #content { 
 
    \t margin: auto; 
 
    \t width: 68vw; 
 
    \t margin-top: 25vh; 
 
    \t } 
 
    }
<div id="footer"> 
 
    <h1> 
 
     <div class="footermenu"> 
 
      <ul id="menu-footer-menu" class="menu"> 
 
       <li class="menu-item"><a href="url_4">Contact</a> 
 
       <ul class="sub-menu"> 
 
         <li class="menu-item"><a href="url_6_a">More Landscapes</a></li> 
 
       <li class="menu-item"><a href="url_6_b">Collection</a></li></ul> 
 
       </li> 
 
       <li class="menu-item"><a href="url_5">Links</a> 
 
       <ul class="sub-menu"> 
 
         <li class="menu-item"><a href="url_6_a">More Landscapes</a></li> 
 
         <li class="menu-item"><a href="url_6_b">Collection</a></li> 
 
         <li class="menu-item"><a href="url_6_c">Brave New</a></li> 
 
         <li class="menu-item"><a href="url_6_d">Line Three</a></li> 
 
         <li class="menu-item"><a href="url_6_e">Mary's World</a></li> 
 
        </ul> 
 
       </li> 
 
       <li class="menu-item"><a href="url_6">About</a> 
 
        <ul class="sub-menu"> 
 
         <li class="menu-item"><a href="url_6_a">More Landscapes</a></li> 
 
         <li class="menu-item"><a href="url_6_b">Collection</a></li> 
 
         <li class="menu-item"><a href="url_6_c">Brave New</a></li> 
 
         <li class="menu-item"><a href="url_6_d">Line Three</a></li> 
 
         <li class="menu-item"><a href="url_6_e">Mary's World</a></li> 
 
        </ul> 
 
       </li> 
 
      </ul> 
 
     </div> 
 
    </h1> 
 
</div><!-- end of #footer -->

不知你能不能帮我始终放置在相同的位置页脚中,无论在和菜单项,视口尺寸和字体大小的数量?

对于wordpress引擎的php方法也很受欢迎。 总而言之: 我试图改变我的页脚菜单的HTML顺序,以这样一种方式父菜单项出现在其子元素之后。我已经使用CSS“transform:translateY(n)”来完成它,但是这并不能完全解决我的问题,因为这种方法有太多变量。 非常感谢。

回答

1

没有深入你的非常详细的要求的细节,我认为你基本上想要的菜单是botton-up。

由于您使用的是flexbox,因此这只是使用flex-direction:column-reverse的问题。

一个一般的例子。

* { 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
a { 
 
    color: black; 
 
    text-decoration: none; 
 
} 
 
ul { 
 
    list-style: none; 
 
} 
 
#footer { 
 
    position: fixed; 
 
    bottom: 0; 
 
    width: 100%; 
 
    background: pink; 
 
} 
 
.footermenu { 
 
    display: flex; 
 
    justify-content: space-between; 
 
} 
 
.footermenu #menu-footer-menu { 
 
    display: flex; 
 
    flex: 1; 
 
    justify-content: space-around; 
 
    text-align: center; 
 
} 
 
#menu-footer-menu > li > a { 
 
    color: red; 
 
} 
 
.menu-item { 
 
    display: flex; 
 
    flex-direction: column-reverse; 
 
    flex: 1; 
 
}
<div id="footer"> 
 
    <div class="footermenu"> 
 
    <ul id="menu-footer-menu" class="menu"> 
 
     <li class="menu-item"><a href="url_4">Contact</a> 
 

 
     <ul class="sub-menu"> 
 
      <li class="menu-item"><a href="url_6_a">More Landscapes</a> 
 
      </li> 
 
      <li class="menu-item"><a href="url_6_b">Collection</a> 
 
      </li> 
 
     </ul> 
 
     </li> 
 

 
     <li class="menu-item"><a href="url_5">Links</a> 
 

 
     <ul class="sub-menu"> 
 
      <li class="menu-item"><a href="url_6_a">More Landscapes</a> 
 
      </li> 
 
      <li class="menu-item"><a href="url_6_b">Collection</a> 
 
      </li> 
 
      <li class="menu-item"><a href="url_6_c">Brave New</a> 
 
      </li> 
 
      <li class="menu-item"><a href="url_6_d">Line Three</a> 
 
      </li> 
 
      <li class="menu-item"><a href="url_6_e">Mary's World</a> 
 
      </li> 
 
     </ul> 
 
     </li> 
 
     <li class="menu-item"><a href="url_6">About</a> 
 
     <ul class="sub-menu"> 
 
      <li class="menu-item"><a href="url_6_a">More Landscapes</a> 
 
      </li> 
 
      <li class="menu-item"><a href="url_6_b">Collection</a> 
 
      </li> 
 
      <li class="menu-item"><a href="url_6_c">Brave New</a> 
 
      </li> 
 
      <li class="menu-item"><a href="url_6_d">Line Three</a> 
 
      </li> 
 
      <li class="menu-item"><a href="url_6_e">Mary's World</a> 
 
      </li> 
 
     </ul> 
 
     </li> 
 
    </ul> 
 
    </div> 
 
</div> 
 
<!-- end of #footer -->

+0

这就是它。非常感谢你。 –

1

我不认为你需要在这里使用变换。只需在子菜单的主菜单标题<a>标记之前的子代码ul中加入代码即可。在菜单页脚菜单中不需要高度,还需要单独将每个主菜单li设置为绝对位置以将其保持在底部。

这是我把你的代码变成了什么。我认为这是你需要的。

http://codepen.io/Nasir_T/pen/jModxK

希望这是有道理的。让我知道是否需要更多帮助。

P.S.我想我帮助你在另一个问题中修正菜单左侧,中间和右侧的路线。我不是吗? :)

+0

感谢。这会做到Nasir,但不幸的是,html结构是由一个wordpress php文件动态生成的,需要每隔一段时间更新一次。因此我不能改变它:它只会在Wordpress更新之前有效。是的,你确实帮助解决了路线问题。再次感谢。 :) –