W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
熟悉基礎(chǔ)知識,掌握Flex布局,了解動態(tài)修改樣式、引入less預(yù)編譯的方法
通過本節(jié),你將學會:
教程文檔對應(yīng)的項目代碼文件:src/StyleLayout目錄
框架使用border-box模型,暫不支持content-box模型與box-sizing屬性
布局所占寬度Width:
Width = width(包含padding-left + padding-right + border-left + border-right)
布局所占高度Height:
Height = height(包含padding-top + padding-bottom + border-top + border-bottom)
框架目前僅支持長度單位px
和%
。與傳統(tǒng)web頁面不同,px
是相對于項目配置基準寬度
的單位,已經(jīng)適配了移動端屏幕,其原理類似于rem
開發(fā)者只需按照設(shè)計稿確定框架樣式中的px值即可。設(shè)計稿1px
與框架樣式1px
轉(zhuǎn)換公式如下:
設(shè)計稿1px / 設(shè)計稿基準寬度 = 框架樣式1px / 項目配置基準寬度
項目配置基準寬度
:項目的配置文件(<ProjectName>/src/manifest.json
)中config.designWidth
的值,默認為750
示例如下:
若設(shè)計稿寬度為640px,元素A在設(shè)計稿上的寬度為100px,實現(xiàn)的兩種方案如下:
方案一:
修改項目配置基準寬度
:將項目配置基準寬度
設(shè)置為設(shè)計稿基準寬度
,則框架樣式1px
等于設(shè)計稿1px
項目配置基準寬度
,在項目的配置文件(<ProjectName>/src/manifest.json
)中,修改config.designWidth
:{
"config": {
"designWidth": 640
}
}
width: 100px;
方案二:
不修改項目配置基準寬度
:若當前項目配置的項目配置基準寬度
為750,設(shè)元素A的框架樣式xpx
,由轉(zhuǎn)換公式得:100 / 640 = x / 750
width: 117px;
1060 開始,position 將支持三種屬性值:relative、absolute 和 fixed,并且默認值為 relative,入門可以參考 CSS 文檔
開發(fā)者可以使用內(nèi)聯(lián)樣式
、tag選擇器
、class選擇器
、id選擇器
來為組件設(shè)置樣式
同時也可以使用并列選擇
、后代選擇器
設(shè)置樣式
示例如下:
<template>
<div class="tutorial-page">
<!-- 內(nèi)聯(lián)樣式 -->
<text style="color: #FF0000;">內(nèi)聯(lián)樣式</text>
<text id="title">ID選擇器</text>
<text class="title">class選擇器</text>
<text>tag選擇器</text>
</div>
</template>
<style>
.tutorial-page {
flex-direction: column;
}
/* tag選擇器 */
text {
color: #0000FF;
}
/* class選擇器(推薦) */
.title {
color: #00FF00;
}
/* ID選擇器 */
#title {
color: #00A000;
}
/* 并列選擇 */
.title, #title {
font-weight: bold;
}
/* 后代選擇器 */
.tutorial-page text {
font-size: 42px;
}
/* 直接后代選擇器 */
.tutorial-page > text {
text-decoration: underline;
}
</style>
<script>
export default {
onInit () {
this.$page.setTitleBar({ text: '設(shè)置樣式' })
}
}
</script>
通用樣式如 margin,padding 等屬性可以點擊此處
框架本身的布局使用Flex布局模型
,關(guān)于具體Flex布局教程
可以參考外部文檔:Flex 布局教程
div組件為最常用的Flex容器組件,具有Flex布局的特性;text、a、span、label組件為文本容器組件,其它組件不能直接放置文本內(nèi)容
示例如下:
<template>
<div class="tutorial-page">
<div class="item">
<text>item1</text>
</div>
<div class="item">
<text>item2</text>
</div>
</div>
</template>
<style>
.tutorial-page {
/* 交叉軸居中 */
align-items: center;
/* 縱向排列 */
flex-direction: column;
}
.tutorial-page > .item {
/* 有剩余空間時,允許被拉伸 */
/*flex-grow: 1;*/
/* 空間不夠用時,不允許被壓縮 */
flex-shrink: 0;
/* 主軸居中 */
justify-content: center;
width: 200px;
height: 100px;
margin: 10px;
background-color: #FF0000;
}
</style>
<script>
export default {
onInit () {
this.$page.setTitleBar({ text: 'Flex布局示例' })
}
}
</script>
動態(tài)修改樣式有多種方式,與傳統(tǒng)前端開發(fā)習慣一致,包括但不限于以下:
<template>
<div style="flex-direction: column;">
<!-- 修改 class -->
<text class="normal-text {{ className }}" onclick="changeClassName">點擊我修改文字顏色</text>
<!-- 修改內(nèi)聯(lián) style -->
<text style="color: {{ textColor }}" onclick="changeInlineStyle">點擊我修改文字顏色</text>
<!-- 修改綁定的對象 (1030+) -->
<text style="{{ styleObj }}" onclick="changeStyleObj">點擊我修改文字顏色</text>
<!-- 修改綁定的樣式字符串 (1030+) -->
<text style="{{ styleText }}" onclick="changeStyleText">點擊我修改文字顏色</text>
</div>
</template>
<style>
.normal-text {
font-weight: bold;
}
.text-blue {
color: #0faeff;
}
.text-red {
color: #f76160;
}
</style>
<script>
export default {
private: {
className: 'text-blue',
textColor: '#0faeff',
styleObj: {
color: 'red'
},
styleText: 'color: blue'
},
onInit () {
this.$page.setTitleBar({ text: '動態(tài)修改樣式' })
},
changeClassName () {
this.className = 'text-red'
},
changeInlineStyle () {
this.textColor = '#f76160'
},
changeStyleObj () {
this.styleObj = {
color: 'yellow'
}
},
changeStyleText () {
this.styleText = 'color: green'
}
}
</script>
less 語法入門請參考less 文檔學習
使用 less 請先安裝相應(yīng)的類庫:less、less-loader,
npm i less less-loader
詳見文檔style 樣式 --> 樣式預(yù)編譯;然后在<style>標簽上添加屬性lang="less"
<template>
<div class="tutorial-page">
<text id="title">less示例!</text>
</div>
</template>
<style lang="less">
/* 引入外部less文件 */
@import './style.less';
/* 使用less */
</style>
scss 語法入門請參考scss 中文官網(wǎng)學習
使用 scss 請在快應(yīng)用項目下執(zhí)行以下命令安裝相應(yīng)的類庫:node-sass、sass-loader,
npm i node-sass sass-loader
詳見文檔style 樣式 --> 樣式預(yù)編譯;然后在<style>標簽上添加屬性lang="scss" 示例如下:
<template>
<div class="tutorial-page">
<text id="title">less示例!</text>
</div>
</template>
<style lang="scss">
/* 引入外部scss文件 */
@import './style.scss';
/* 使用scss */
</style>
快應(yīng)用支持 postcss 來解析 css,看 postcss 的官方文檔都知道,postcss 可以采用類似 less,sass 的語法來解析 css 了,比如支持變量,嵌套,定義函數(shù)等功能了。
使用 postcss 解析 css 分為 3 個步驟:
1.安裝對應(yīng)的 loader
npm i postcss-loader precss@3.1.2 -D
2.在項目的根目錄新建一個 postcss.config.js,增加如下內(nèi)容:
module.exports = {
plugins: [require('precss')]
}
其中 precss 為 postcss 的插件。
3.在頁面對應(yīng)的 style 標簽上增加 lang="postcss",如下
<style lang="postcss">
/* 使用postcss */
.tutorial-page {
justify-content: center;
background-color: #00beaf;
#title {
color: #FF0000;
}
}
</style>
這樣你就可以在 css 里面書寫對應(yīng)的代碼了。
說明:
如果你想支持更多的語法格式,可以在 postcss.config.js 文件里面添加更多的插件,關(guān)于 postcss 的插件見插件地址。
了解頁面的樣式與布局后,開發(fā)者就可以著手設(shè)計開發(fā)頁面了
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: