客戶端初學(xué)Vue之UI篇

hi好久不見~消失的這半年做了件大事,生了個兔寶寶??產(chǎn)假回來之后發(fā)現(xiàn)項目組又啟動了一個新項目精肃,這次做的網(wǎng)頁,基于Nuxt3開發(fā)的帜乞,于是開始了學(xué)習(xí)前端知識司抱。這一路從Android單端、到Flutter跨平臺黎烈、再到現(xiàn)在Web习柠,有種在大前端升級打怪的感覺匀谣。當(dāng)然了,由于接觸不深加上著急上手资溃,第一步往往先做UI武翎,本篇總結(jié)在Android、Flutter溶锭、Vue上最常用幾種布局在實現(xiàn)上的區(qū)別宝恶,方便有客戶端經(jīng)驗的開發(fā)更快理解和實踐Web項目。

通用

在Web中使用CSS(Cascading Style Sheets趴捅,層疊樣式表)來描述樣式垫毙,在Android 中使用的是XML(Extensible Markup Language,可擴(kuò)展標(biāo)記語言)拱绑,目的都是將把數(shù)據(jù)與樣式分開综芥。而Flutter使用一種稱為Widget的組件系統(tǒng)來構(gòu)建 UI,每個Widget都有自己的屬性欺栗,創(chuàng)建時傳入相應(yīng)參數(shù)就能設(shè)置樣式了毫痕。常見通用屬性如間距、顏色迟几、文本這些命名都是相似的消请,就不詳細(xì)說明了,對照表如下:

屬性 Android Flutter Vue
寬度 android:layout_width width(組件Container 类腮、 SizedBox width
高度 android:layout_height height(組件Container 臊泰、 SizedBox height
外間距 android:layout_margin margin(組件 ContainerPadding margin
內(nèi)間距 android:padding padding(組件 Container 蚜枢、 Padding padding
文本顏色 android:textColor color(組件 Text color
背景顏色 android:background color(組件 Container background-color
文本大小 android:textSize fontSize(組件TextStyle font-size
文本粗細(xì) android:textStyle fontWeight(組件TextStyle font-weight
文本樣式 android:textStyle fontStyle(組件TextStyle font-style

相對布局

實現(xiàn)在容器中距頂部100距左側(cè)50:


1缸逃、Android

  • 使用 RelativeLayoutFrameLayout 實現(xiàn)
  • 可通過margin移動子控件
  • RelativeLayout還提供兩類參考系幫助更快速定位——相對于父容器、相對其他兄弟控件厂抽,比如是否在父容器最底部(android:layout_alignParentBottom)需频、在父容器垂直居中(android:layout_centerVertical)、在某個控件下方(android:layout_below)筷凤、與某個控件頂部對齊(android:layout_alignTop)等
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="A"
        android:layout_marginTop="100dp"
        android:layout_marginLeft="50dp" />

</RelativeLayout>

2昭殉、Flutter

  • 使用 StackPositioned 一起實現(xiàn)
  • Stack表示這是一個可堆疊子組件的容器,其中的alignment 屬性可以用來控制未定位或部分定位的子組件的對齊方式
  • Positioned 用來給子組件指定具體的位置藐守,包括 top挪丢、rightbottomleft卢厂,它只能作為 Stack 的直接子組件使用
Stack(
  alignment: Alignment.center,
  children: [
    Positioned(
      top: 100,
      left: 50,
      child: Text('A'),
    ),
  ],
)

3乾蓬、Vue

  • 使用position 屬性來實現(xiàn)
  • 同樣的通過 topright慎恒、bottomleft 來定位
  • 當(dāng)position 設(shè)置為 relative 時元素會相對于其原始位置進(jìn)行移動
  • 當(dāng)position 設(shè)置為 absolute 時元素會相對于其最近一個定位的父元素進(jìn)行移動
<div style="position: relative; height: 200px; width: 200px;">
  <div style="position: absolute; top: 100px; left: 50px;">A</div>
</div>

線性布局

實現(xiàn)三個控件水平排布任内,最后一個靠右撵渡,第二個元素分配剩余空間,整體在容器中垂直居中:


1族奢、Android

  • 使用 Linerlayout 實現(xiàn)姥闭,默認(rèn)horizontal
  • android:orientation表示子控件的排布方向丹鸿,值horizontal/vertical
  • android:gravity表示子控件的對齊方式越走,默認(rèn)start
  • android:layout_weight表示子控件對剩余空間的占用比例,默認(rèn)0
<LinearLayout
    android:layout_width="200dp"
    android:layout_height="50dp"
    android:orientation="horizontal"
    android:gravity="center_vertical"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="A"/>

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="B"
        android:maxLines="1"
        android:ellipsize="end"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="C"/>

</LinearLayout>
  • 文本超過一行打點:
android:maxLines="1"
android:ellipsize="end"

2靠欢、Flutter

  • 使用 Row(水平排列)或Column (垂直排列)實現(xiàn)
  • Expanded表示一個在主軸方向上撐滿剩余空間的組件廊敌,只能作為RowColumn 子節(jié)點
  • mainAxisAlignment表示主軸方向上的對齊方式,默認(rèn)start
  • crossAxisAlignment表示副軸方向上的對齊方式门怪,默認(rèn)center
Container(
  width: 200,
  height: 50,
  child: Row(
    children: [
    Text("A"),
      Expanded(
        child: Text(
          "B",
          maxLines: 1,
          overflow: overflow: TextOverflow.ellipsis,
        ),
      ),
      Text("C"),
    ],
    ],
  ),
),
  • 文本超過一行打點:
maxLines: 1,
overflow: TextOverflow.ellipsis,

3骡澈、Vue

  • 通過display: flex 實現(xiàn),默認(rèn)row
  • flex-direction表示子元素的排布方向掷空,值row/column
  • justify-content表示主軸方向上的對齊方式肋殴,默認(rèn)start
  • align-items表示副軸方向上的對齊方式,默認(rèn)start
  • flex-grow表示子元素對剩余空間的占用比例坦弟,默認(rèn)0
  • flex-shrink表示子元素在控件不足時的縮小比例护锤,默認(rèn)1
   <div style="display: flex; align-items:center; height: 50px; width: 200px" >
    <span>A</span>
    <span style="flex-grow: 1; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden;">B</span>
    <span>C</span>
  </div>
  • 文本超過一行打點:
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市酿傍,隨后出現(xiàn)的幾起案子烙懦,更是在濱河造成了極大的恐慌,老刑警劉巖赤炒,帶你破解...
    沈念sama閱讀 223,207評論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氯析,死亡現(xiàn)場離奇詭異,居然都是意外死亡莺褒,警方通過查閱死者的電腦和手機(jī)掩缓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評論 3 400
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來遵岩,“玉大人你辣,你說我怎么就攤上這事】跤啵” “怎么了绢记?”我有些...
    開封第一講書人閱讀 170,031評論 0 366
  • 文/不壞的土叔 我叫張陵,是天一觀的道長正卧。 經(jīng)常有香客問我蠢熄,道長,這世上最難降的妖魔是什么炉旷? 我笑而不...
    開封第一講書人閱讀 60,334評論 1 300
  • 正文 為了忘掉前任签孔,我火速辦了婚禮叉讥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘饥追。我一直安慰自己图仓,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,322評論 6 398
  • 文/花漫 我一把揭開白布但绕。 她就那樣靜靜地躺著救崔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捏顺。 梳的紋絲不亂的頭發(fā)上六孵,一...
    開封第一講書人閱讀 52,895評論 1 314
  • 那天,我揣著相機(jī)與錄音幅骄,去河邊找鬼劫窒。 笑死,一個胖子當(dāng)著我的面吹牛拆座,可吹牛的內(nèi)容都是我干的主巍。 我是一名探鬼主播,決...
    沈念sama閱讀 41,300評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼挪凑,長吁一口氣:“原來是場噩夢啊……” “哼孕索!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起岖赋,我...
    開封第一講書人閱讀 40,264評論 0 277
  • 序言:老撾萬榮一對情侶失蹤檬果,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后唐断,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體选脊,經(jīng)...
    沈念sama閱讀 46,784評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,870評論 3 343
  • 正文 我和宋清朗相戀三年脸甘,在試婚紗的時候發(fā)現(xiàn)自己被綠了恳啥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,989評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡丹诀,死狀恐怖钝的,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铆遭,我是刑警寧澤硝桩,帶...
    沈念sama閱讀 36,649評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站枚荣,受9級特大地震影響碗脊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜橄妆,卻給世界環(huán)境...
    茶點故事閱讀 42,331評論 3 336
  • 文/蒙蒙 一衙伶、第九天 我趴在偏房一處隱蔽的房頂上張望祈坠。 院中可真熱鬧,春花似錦矢劲、人聲如沸赦拘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽躺同。三九已至,卻和暖如春花嘶,著一層夾襖步出監(jiān)牢的瞬間笋籽,已是汗流浹背蹦漠。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評論 1 275
  • 我被黑心中介騙來泰國打工椭员, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人笛园。 一個月前我還...
    沈念sama閱讀 49,452評論 3 379
  • 正文 我出身青樓隘击,卻偏偏與公主長得像,于是被迫代替她去往敵國和親研铆。 傳聞我的和親對象是個殘疾皇子埋同,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,995評論 2 361

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