Web使用Pug與Stylus

5.pug用法:

5.1層級:
需要按照階梯層級來寫pug代碼烫堤,例如Html標簽肯定包裹了Head和body標簽,那html標簽在第一行,head和body就必須在第二,三行,而且要縮進兩個空格寫佳晶,這里的head和body是同級的,所以他們必須保持一致的縮進

// 傳統(tǒng)寫法
<html>
    <head></head>
    <body>
        <h1></h1>
        <p></p>
        <p></p>
        <button></button>
    </body>
</html>

// pug寫法
html
    head
    body
        h1
        p
        p
        button

比較得出pug寫法很簡潔佛吓,而且不需要閉口,傳統(tǒng)的必須用</>來閉口垂攘。

5.2 id和class
class用.表示,id用#表示

    // 傳統(tǒng)寫法
    <html>
        <head></head>
        <body>
            <h1 id="pageTitle">This Is Page Title</h1>
            <p class="top-p">
                嘿嘿嘿
            </p>
            <p class="bottom-p">
                哈哈哈
            </p>
        </body>
    </html>

    // pug寫法
    html
        head
        body
            h1#pageTitle This Is Page Title
            p.top-p
                嘿嘿嘿
            .bottom-p
                哈哈哈

另外维雇,<div></div>的class和id屬性寫法最簡單,可能是因為這個是html最常見的標簽晒他,所以他不需要加前綴吱型,直接這樣

    <div id = "div-id">哼哼</div>
    <div class="display-div">哈哈</div>
    
    // pug寫法
    .div-id
    .display-div

5.3 屬性寫在圓括號里
傳統(tǒng)html寫法

  <div class = "container">
    <input type="number" v-model="mName" class="input_name" placeholder="請輸入用戶名"/>
    <button @click="clickSubmit()" class="btn_submit">提交</button>
    <img border="0" src="/images/pulpit.jpg" alt="Pulpit rock" width="304" height="228"/>
  </div>

pug寫法

  .container
    input(type="number" v-model="mName" class="input_name" placeholder="請輸入用戶名字")
    button(@click="clickSubmit()" class="btn_submit") 提交
    img(src="/images/pulpit.jpg" class="dateIcon" width="304" height="228" alt="Pulpit rock")

最后總結(jié):
1.傳統(tǒng)控件不需要. 例如input,button,img,textrea,p,span等等,直接寫代表控件的名字陨仅,在圓括號里面寫屬性
2.div肯定是.class名字開頭津滞,但是傳統(tǒng)控件也可以手動加class名字和id名字,方便其它地方使用

實際demo:
1.效果圖:

image.png

html部分代碼

<template lang="pug">
  .page
    .row(@click="showDateTimePicker()")
      span(class="title") 日期
      .right
        img(src="../../../assets/turnleft.png" class="dateIcon")
        span(class="date") {{currentDate}}
      .line
    .row(style="padding-top:8px")
      span(class="title") 班次
      .right
        .button(v-for="item,index in scheduleList" :key="index"  :style="index==currentShift? buttonChooiceStyle() : buttonUnChooiceStyle()" @click="clickShift(index)") {{item.name}}
      .line
    .row.active
      span(class="title") 停機總時長 (min)
      .right
        input(type="number" v-model="bean.total_time" class="input" placeholder="填寫停機總時長")
      .line
    .row.active
      span(class="title") 設備 (電氣) (min)
      .right
        input(type="number" v-model="bean.elec_device" class="input" placeholder="填寫設備(電氣)")
      .line
    .row.active
      span(class="title") 設備 (機械) (min)
      .right
        input(type="number" v-model="bean.mach_device" class="input" placeholder="填寫設備(機械)")
      .line
    p 獨自一行
    .showSpan
      span  也是一行
    .save
      .button(@click="addData()") 保存

</template>

樣式代碼灼伤,是用stylus實現(xiàn)的触徐,你們也可以用傳統(tǒng)的方式實現(xiàn),但是pug搭配stylus非常方便狐赡,兩者都不用寫一些多余的代碼撞鹉。

<style lang="stylus" scoped>
  row()//通用方法,可以定義多個在下面調(diào)用
    display flex
    flex-direction row
  lineStyle()//通用方法2 如果是拷貝這些代碼注意第一個方法以下的代碼空格可能會亂颖侄,導致樣式不對鸟雏,注意對比
    height 1px
    background-color #EEEEEE
    position absolute
    width 100%
    bottom 0px
    left 10px

  .page
    width 100%
    height 100%
    overflow-x hidden
    padding-bottom 62px
    .row
      position relative
      row()
      align-items center
      padding 12px 10px
      .title
        color #333333
        font-size 14px
      .right
        flex 1
        display flex
        flex-direction row-reverse
        flex-wrap wrap
      .line
        lineStyle()
      &.active
        padding 0 10px
      .date
        color #666666
        font-size 16px
      .dateIcon
        width 5px
        height 10px
        margin-top 4px
        margin-left 6px
    p
      background firebrick
    .showSpan
      width 100%
      span
        background green
    .button
      border 1px solid #1E9AFF
      color #1E9AFF
      padding-left 15px
      padding-right 15px
      height 24px
      background-color #fff
      display flex
      justify-content center
      align-items center
      font-size 14px
      border-radius 4px
      margin-left 10px
      margin-top 5px
    .input
      font-size 14px
      text-align right
      height 45px
    .save
      width 100%
      bgf()
      position fixed
      bottom 0
      wh 100% 52px
      font-size 14px
      display flex
      justify-content flex-end
      border-top 1px solid #EEEEEE
      .button
        display flex
        justify-content center
        align-items center
        height 28px
        width 80px
        margin 12px 28px
        background-color #1E9AFF
        color #fff
        border null
        border-radius 16px
</style>

對于stylus的使用特點

  1. class的名字前面用.開頭,在下一行縮進兩格開始寫樣式览祖,這個class的子布局的名字聲明和他的樣式的縮進保持一致孝鹊,子布局樣式實現(xiàn)又在下一行并且縮進兩個單元格進行,說的很抽象展蒂,看上面代碼就明白了又活。
  2. 可以定義通用方法苔咪,除了定義在當前的style里面(demo里面有),也可以定義一個全局的皇钞,這個就不細說了悼泌。
  3. &符號是代表當前這一層的上面一層的名字,切割要用.來切割,好處是代碼清晰
    例如上面pug實現(xiàn)的html寫的是
<template lang="pug">
  .main_header 頭部布局
    .main_header.left  左邊布局
    .main_header.right 右邊布局
</template>
<style lang="stylus">
  .main_header
    background white
    &.left
    &.right
</style>

& 就是 .main_header 所以&.left 就是.main_header.left

  1. 樣式動態(tài)改變用:class輔助實現(xiàn):
<template lang="pug">
  button(class="button_style" :class="{special_style: isSpecialStyle}" @click="changeStyle()")  點擊改變樣式
</template>


<script>
  export default {
    data() {
      return {
        isSpecialStyle:false
      }
    },
    method:{
      changeStyle() {
        // 通過控制這個變量確定是否使用special_style
        this.isSpecialStyle = !this.isSpecialStyle
      }
    }
  }
</script>

<style scoped lang="stylus">
 .button_style
     width 90px
     height 36px
     padding-left 2px
     padding-right 2px
     border-radius 26px
     font-size 12px
     color rgba(255,255,255,1)
     line-height:17px;
     background #FFFFFF
     border:1px
     &.special_style
        background #4472C5
        border:1px solid #4472C5

</style>
***5.3 ***

CSS語法補充

padding是上右下左的順序夹界,有四種寫法:

padding:10px; 意思是上下左右值全是10px
padding:5px 10px; 意思是上下為5px馆里,左右為10px;
padding:1px 2px 3px 4px; 這個寫法意思是:上為1px,右為2px可柿,下為3px鸠踪,左為4px
padding:5px 10px 7px; 這種寫法意思是:上為5px,左右為10px复斥,下為7px

注意:android里面都是固定的寫法左右上下营密,只有兩種寫法:

padding:10px;意思是左上右下值全是10px
padding:1px 2px 3px 4px; 這個寫法意思是:左為1px,上為2px目锭,右為3px评汰,下為4px

js常用方法補充:

// 深度復制對象方法
copy(obj){
        let copyObj = {}; //最初的時候給它一個初始值=它自己或者是一個json
        for(let name in obj){
          if(typeof obj[name] === "object"){ //先判斷一下obj[name]是不是一個對象
            copyObj[name]= (obj[name].constructor===Array)?[]:{}; //我們讓要復制的對象的name項=數(shù)組或者是json
            this.copy(obj[name],copyObj[name]); //然后來無限調(diào)用函數(shù)自己 遞歸思想
          }else{
            copyObj[name]=obj[name];  //如果不是對象,直接等于即可痢虹,不會發(fā)生引用被去。
          }
        }
      return copyObj; //然后在把復制好的對象給return出去
     },
// 淺復制,這個賦值的是地址奖唯,會跟著變惨缆。
Var newObj = Oldobj
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市丰捷,隨后出現(xiàn)的幾起案子坯墨,更是在濱河造成了極大的恐慌,老刑警劉巖病往,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捣染,死亡現(xiàn)場離奇詭異,居然都是意外死亡停巷,警方通過查閱死者的電腦和手機液斜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叠穆,“玉大人少漆,你說我怎么就攤上這事∨鸨唬” “怎么了示损?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嚷硫。 經(jīng)常有香客問我检访,道長始鱼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任脆贵,我火速辦了婚禮医清,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘卖氨。我一直安慰自己会烙,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布筒捺。 她就那樣靜靜地躺著柏腻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪系吭。 梳的紋絲不亂的頭發(fā)上五嫂,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音肯尺,去河邊找鬼沃缘。 笑死,一個胖子當著我的面吹牛则吟,可吹牛的內(nèi)容都是我干的槐臀。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼逾滥,長吁一口氣:“原來是場噩夢啊……” “哼峰档!你這毒婦竟也來了败匹?” 一聲冷哼從身側(cè)響起寨昙,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎掀亩,沒想到半個月后舔哪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡槽棍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年捉蚤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炼七。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡缆巧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出豌拙,到底是詐尸還是另有隱情陕悬,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布按傅,位于F島的核電站捉超,受9級特大地震影響胧卤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拼岳,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一枝誊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惜纸,春花似錦叶撒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至椭更,卻和暖如春哪审,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背虑瀑。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工湿滓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人舌狗。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓叽奥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親痛侍。 傳聞我的和親對象是個殘疾皇子朝氓,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容