Element分析(組件篇)——Layout

布局一共有兩個(gè)組件岛琼,一個(gè)是row视卢,另一個(gè)是col雏逾,后者是通過render函數(shù)來創(chuàng)建的嘉裤,我們一一進(jìn)行講解。


Row

row類似于bootstrap中的container校套,用來作為col的容器价脾,上面有一些動(dòng)態(tài)的classstyle笛匙,以及一個(gè)slot用來放置col侨把,相對(duì)較為簡(jiǎn)單。

<template>
  <div
    class="el-row"
    :style="style"
    :class="[
      justify !== 'start' ? 'is-justify-' + justify : '',
      align !== 'top' ? 'is-align-' + align : '',
      {
        'el-row--flex': type === 'flex'
      }
    ]"
  >
    <slot></slot>
  </div>
</template>

其中妹孙,style是一個(gè)計(jì)算屬性秋柄,會(huì)根據(jù)gutter這一prop來改變,欄目之間的間隔蠢正,用來抵消col造成的兩邊的padding骇笔。

computed: {
  style() {
    var ret = {};

    if (this.gutter) {
      ret.marginLeft = `-${this.gutter / 2}px`;
      ret.marginRight = ret.marginLeft;
    }

    return ret;
  }
}

其他三個(gè)屬性都是prop


props: {
  type: String,  // 可以使用flex,這樣會(huì)采用flex布局
  justify: {  // flex 布局下的水平排列方式
    type: String,
    default: 'start'
  },
  align: {  // flex 布局下的垂直排列方式
    type: String,
    default: 'top'
  }
},

Col

列的實(shí)現(xiàn)只有一個(gè)col.js嚣崭,因?yàn)榫唧w的組件是通過render來生成的笨触,因此,我們從render入手雹舀,來解析col組件芦劣。

render(h) {
  let { style } = this;  // style 是一個(gè)計(jì)算屬性,將在下面的計(jì)算屬性中講解
  let classList = [];

  // span 柵格占據(jù)的列數(shù)说榆,通過 width 來實(shí)現(xiàn)
  // offset 柵格左側(cè)的間隔格數(shù)虚吟,通過 margin-left 實(shí)現(xiàn)
  // push 柵格向右移動(dòng)格數(shù),通過 left 實(shí)現(xiàn)
  // pull 柵格向左移動(dòng)格數(shù)签财,通過 right 實(shí)現(xiàn)
  ['span', 'offset', 'pull', 'push'].forEach(prop => {
    if (this[prop]) {
      classList.push(
        prop !== 'span'
        ? `el-col-${prop}-${this[prop]}`
        : `el-col-${this[prop]}`
      );
    }
  });

  // 不同屏幕大小下的適配串慰,傳入數(shù)字的話只會(huì)影響 span,還可以通過傳入對(duì)象進(jìn)行更多的控制
  // xs <768px 響應(yīng)式柵格數(shù)或者柵格屬性對(duì)象
  // sm ≥768px 響應(yīng)式柵格數(shù)或者柵格屬性對(duì)象
  // md ≥992px 響應(yīng)式柵格數(shù)或者柵格屬性對(duì)象
  // lg ≥1200px 響應(yīng)式柵格數(shù)或者柵格屬性對(duì)象
  ['xs', 'sm', 'md', 'lg'].forEach(size => {
    if (typeof this[size] === 'number') {
      classList.push(`el-col-${size}-${this[size]}`);
    } else if (typeof this[size] === 'object') {
      let props = this[size];
      Object.keys(props).forEach(prop => {
        classList.push(
          prop !== 'span'
          ? `el-col-${size}-${prop}-${props[prop]}`
          : `el-col-${size}-${props[prop]}`
        );
      });
    }
  });

  return (
    <div
      class={['el-col', classList]}
      style={style}>
      {this.$slots.default}
    </div>
  );
}

注:筆者目前對(duì)render的使用還沒有太深入的研究唱蒸,還流于表面邦鲫,因此不評(píng)價(jià)這段的好壞。

計(jì)算屬性

gutterstyle都是計(jì)算屬性油宜。

computed: {
  gutter() {
    return this.$parent.gutter;  // 返回父組件的 gutter 設(shè)置
  },

  style() {
    var ret = {};

    if (this.gutter) {  // 如果有間隔掂碱,則改變 padding 值
      ret.paddingLeft = this.gutter / 2 + 'px';
      ret.paddingRight = ret.paddingLeft;
    }

    return ret;
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末怜姿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子疼燥,更是在濱河造成了極大的恐慌沧卢,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件醉者,死亡現(xiàn)場(chǎng)離奇詭異但狭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)撬即,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門立磁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人剥槐,你說我怎么就攤上這事唱歧。” “怎么了粒竖?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵颅崩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蕊苗,道長(zhǎng)沿后,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任朽砰,我火速辦了婚禮尖滚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瞧柔。我一直安慰自己漆弄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布造锅。 她就那樣靜靜地躺著置逻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪备绽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天鬓催,我揣著相機(jī)與錄音肺素,去河邊找鬼。 笑死宇驾,一個(gè)胖子當(dāng)著我的面吹牛倍靡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播课舍,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼塌西,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼他挎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起捡需,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤办桨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后站辉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呢撞,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年饰剥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了殊霞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡汰蓉,死狀恐怖绷蹲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情顾孽,我是刑警寧澤祝钢,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站岩齿,受9級(jí)特大地震影響太颤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盹沈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一龄章、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乞封,春花似錦做裙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至关串,卻和暖如春拧廊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晋修。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工吧碾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人墓卦。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓倦春,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子睁本,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容尿庐,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,050評(píng)論 0 29
  • 序 今年大前端的概念一而再再而三的被提及呢堰,那么大前端時(shí)代究竟是什么呢抄瑟?大前端這個(gè)詞最早是因?yàn)樵诎⒗飪?nèi)部有很多前端開...
    一縷殤流化隱半邊冰霜閱讀 11,233評(píng)論 19 92
  • 1.安裝 可以簡(jiǎn)單地在頁面引入Vue.js作為獨(dú)立版本,Vue即被注冊(cè)為全局變量暮胧,可以在頁面使用了锐借。 如果希望搭建...
    Awey閱讀 11,016評(píng)論 4 129
  • 此文基于官方文檔,里面部分例子有改動(dòng)往衷,加上了一些自己的理解 什么是組件钞翔? 組件(Component)是 Vue.j...
    陸志均閱讀 3,825評(píng)論 5 14
  • 暑假里,和Sylvie一起去了Saint Antoine Abbaye,參加那里的中世紀(jì)節(jié)日席舍。Saint Anto...
    江南煙雨閱讀 447評(píng)論 0 3