vue高仿饿了么课程项目--布局篇学习笔记

结合他人经验以及自己学习过程中遇到的问题,将知识点整理如下。
这篇是布局篇(采用stylus)

flex布局

  • 如果一个布局需要左边是固定长度,右边是自适应宽度,随拉大而大,缩小而小,则可以使用flex布局。移动端很适合。

    
    
  1. .wrapper
  2. display: flex
  3. width: 100 px
  4. .left
  5. flex: 0 0 20 px <! 固定宽度 >
  6. .right
  7. flex :1 <! 自适应 >
  • 如果左右两边平分,则左右都是flex为1

    
    
  1. .wrapper
  2. display: flex
  3. width: 100 px
  4. .left
  5. flex: 1 <! --固定宽度 -->
  6. .right
  7. flex :1 <! --自适应 -->

sticky-footer

sticky-footer就是如果页面不够长的时候,页脚块粘贴在视窗底部,如果内容足够长时,页脚块会被内容向下推送。

  • html

    
    
  1. <div class="detail-wrapper">
  2. <div class="detail-main">
  3. ....
  4. </div>
  5. </div>
  6. <div class="detail-close">
  7. <i class="icon-close"> </i>
  8. </div>
  • stylus    

     给main包一个wrapper,是要设置最小高度100%,这样当内容较少时下面的close也可以定在底部

     给main设置一个padding,是要给close留出位置,这样当内容较多时close的内容不会遮挡住main的内容

     给close设置负margin,可以把位置往上提


    
    
  1. .detail-wrapper
  2. min-height: 100%
  3. .detail-main
  4. padding-bottom: 64 px
  5. .detail-close
  6. position: relative
  7. width: 32 px;
  8. height: 32 px;
  9. margin: -64px auto 0 auto
  10. clear: both

多行文字垂直居中

  • html

    
    
  1. <ul>
  2. <li v-for="(item,index) in goods" class="menu-item" >
  3. <span class="text">
  4. ...
  5. </span>
  6. </li>
  7. </ul>
  • stylus

    
    
  1. .menu-item
  2. display: table
  3. height: 54 px
  4. width: 56 px
  5. padding: 0 12 px
  6. line-height: 14 px
  7. .text
  8. display: table-cell
  9. width: 56 px
  10. vertical-align: middle

inline-block

两个元素都设置为inline-block则可以实现两个元素在同一行。但是两个元素之间有空白符,这时只要在他们的父元素上设置字体大小为0则可以消除空白,注意要给两个元素分别设置字体大小,否则就继承父元素字体大小为0了。


    
    
  1. .content-wrapper
  2. font-size: 0
  3. .avatar
  4. display: inline-block
  5. font-size :14px
  6.   .content
  7. display: inline-block
  8. font-size: 14 px
超出文字以…显示


    
    
  1. white-space: nowrap //不换行
  2. overflow: hidden //超过则隐藏
  3. text-overflow: ellipsis //超过则以...显示
注:此时不能设置font-size为0

box-sizing

box-sizing类型中width包含的是内容+内边距+边框,在这种布局的元素下的子元素继承的width是内容的高度


    
    
  1. width: 56 px
  2. height: 56 px
  3. box-sizing: border-box
模糊

设置一个模糊的且置于文字下面的背景图


    
    
  1. z-index: -1
  2. filter: blur(10 px)

实现宽高相等的容器


    
    
  1. width :100px
  2. height :0
  3. padding-top :100%








结合他人经验以及自己学习过程中遇到的问题,将知识点整理如下。
这篇是布局篇(采用stylus)

flex布局

  • 如果一个布局需要左边是固定长度,右边是自适应宽度,随拉大而大,缩小而小,则可以使用flex布局。移动端很适合。

  
  
  1. .wrapper
  2. display: flex
  3. width: 100 px
  4. .left
  5. flex: 0 0 20 px <! 固定宽度 >
  6. .right
  7. flex :1 <! 自适应 >
  • 如果左右两边平分,则左右都是flex为1

  
  
  1. .wrapper
  2. display: flex
  3. width: 100 px
  4. .left
  5. flex: 1 <! --固定宽度 -->
  6. .right
  7. flex :1 <! --自适应 -->

sticky-footer

sticky-footer就是如果页面不够长的时候,页脚块粘贴在视窗底部,如果内容足够长时,页脚块会被内容向下推送。

  • html

  
  
  1. <div class="detail-wrapper">
  2. <div class="detail-main">
  3. ....
  4. </div>
  5. </div>
  6. <div class="detail-close">
  7. <i class="icon-close"> </i>
  8. </div>
  • stylus    

     给main包一个wrapper,是要设置最小高度100%,这样当内容较少时下面的close也可以定在底部

     给main设置一个padding,是要给close留出位置,这样当内容较多时close的内容不会遮挡住main的内容

     给close设置负margin,可以把位置往上提


  
  
  1. .detail-wrapper
  2. min-height: 100%
  3. .detail-main
  4. padding-bottom: 64 px
  5. .detail-close
  6. position: relative
  7. width: 32 px;
  8. height: 32 px;
  9. margin: -64px auto 0 auto
  10. clear: both

多行文字垂直居中

  • html

  
  
  1. <ul>
  2. <li v-for="(item,index) in goods" class="menu-item" >
  3. <span class="text">
  4. ...
  5. </span>
  6. </li>
  7. </ul>
  • stylus

  
  
  1. .menu-item
  2. display: table
  3. height: 54 px
  4. width: 56 px
  5. padding: 0 12 px
  6. line-height: 14 px
  7. .text
  8. display: table-cell
  9. width: 56 px
  10. vertical-align: middle

inline-block

两个元素都设置为inline-block则可以实现两个元素在同一行。但是两个元素之间有空白符,这时只要在他们的父元素上设置字体大小为0则可以消除空白,注意要给两个元素分别设置字体大小,否则就继承父元素字体大小为0了。


  
  
  1. .content-wrapper
  2. font-size: 0
  3. .avatar
  4. display: inline-block
  5. font-size :14px
  6.   .content
  7. display: inline-block
  8. font-size: 14 px
超出文字以…显示


  
  
  1. white-space: nowrap //不换行
  2. overflow: hidden //超过则隐藏
  3. text-overflow: ellipsis //超过则以...显示
注:此时不能设置font-size为0

box-sizing

box-sizing类型中width包含的是内容+内边距+边框,在这种布局的元素下的子元素继承的width是内容的高度


  
  
  1. width: 56 px
  2. height: 56 px
  3. box-sizing: border-box
模糊

设置一个模糊的且置于文字下面的背景图


  
  
  1. z-index: -1
  2. filter: blur(10 px)

实现宽高相等的容器


  
  
  1. width :100px
  2. height :0
  3. padding-top :100%








猜你喜欢

转载自blog.csdn.net/chenjuan1993/article/details/81260651