uni-app 頁面樣式與布局


官方文檔

https://uniapp.dcloud.io/frame?id=頁面樣式與布局

rpx單位

uni-app 支持的通用 css 單位包括 px、rpx

  • px 即屏幕像素
  • rpx 即響應式px,一種根據屏幕寬度自適應的動態單位。以750寬的屏幕為基准,750rpx恰好為屏幕寬度。屏幕變寬,rpx 實際顯示效果會等比放大,但在 App 端和 H5 端屏幕寬度達到 960px 時,默認將按照 375px 的屏幕寬度進行計算,具體配置參考:rpx計算配置

<template>
	<view>
		<view>
			樣式的學習
		</view>
		<view class="box1">
			測試文字
			<text>123</text>
		</view>
		<view class="iconfont icon-tupian"></view>
	</view>
</template>

<script>
</script>

<style lang="scss">
	.box1{
		width: 375rpx;
		height: 375rpx;
		background: #0000FF;
		font-size: 30rpx;
		color: #fff;
	}
</style>

自適應的效果

image-20210316155310945

image-20210316155341515

可以明顯的看到寬高自動變化

@import導入外聯樣式表

使用@import語句可以導入外聯樣式表,@import后跟需要導入的外聯樣式表的相對路徑,用;表示語句結束。

例:

創建一個a.css,內容如下

view{
	color: green;
}

頁面中引入

@import url("./a.css");

image-20210316160009298

選擇器

https://uniapp.dcloud.io/frame?id=選擇器

目前支持的選擇器有:

選擇器 樣例 樣例描述
.class .intro 選擇所有擁有 class="intro" 的組件
#id #firstname 選擇擁有 id="firstname" 的組件
element view 選擇所有 view 組件
element, element view, checkbox 選擇所有文檔的 view 組件和所有的 checkbox 組件
::after view::after 在 view 組件后邊插入內容,僅微信小程序和App生效
::before view::before 在 view 組件前邊插入內容,僅微信小程序和App生效

注意:

  • uni-app 中不能使用 * 選擇器。

  • 微信小程序自定義組件中僅支持 class 選擇器

  • page 相當於 body 節點,例如:

    <!-- 設置頁面背景顏色,使用 scoped 會導致失效 -->
    page {
      background-color:#ccc;
    }
    

全局樣式與局部樣式

https://uniapp.dcloud.io/frame?id=全局樣式與局部樣式

定義在 App.vue 中的樣式為全局樣式,作用於每一個頁面。在 pages 目錄下 的 vue 文件中定義的樣式為局部樣式,只作用在對應的頁面,並會覆蓋 App.vue 中相同的選擇器。

注意:

  • App.vue 中通過 @import 語句可以導入外聯樣式,一樣作用於每一個頁面

例:

app.vue中寫入樣式

<script>
	export default {
		onLaunch: function() {
			console.log('App Launch')
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		}
	}
</script>

<style>
	/*每個頁面公共css */
	.box1{
		background-color: pink;
	}
</style>

頁面局部樣式

<template>
	<view>
		<view>
			樣式的學習
		</view>
		<view class="box1">
			測試文字
			<text>123</text>
		</view>
		<view class="iconfont icon-tupian"></view>
	</view>
</template>

<script>
</script>

<style lang="scss">
	@import url("./a.css");
	/* .box1{
		width: 375rpx;
		height: 375rpx;
		background: #0000FF;
		font-size: 30rpx;
		color: #fff;
	} */
</style>

可以看到上面暫時把 box1的局部樣式注釋了,看看效果

image-20210316161018175

將注釋打開

image-20210316161049597

可以看到樣式被覆蓋了

字體圖標

https://uniapp.dcloud.io/frame?id=字體圖標

uni-app 支持使用字體圖標,使用方式與普通 web 項目相同,需要注意以下幾點:

  • 支持 base64 格式字體圖標。

  • 支持網絡路徑字體圖標。

  • 小程序不支持在css中使用本地文件,包括本地的背景圖和字體文件。需以base64方式方可使用。App端在v3模式以前,也有相同限制。v3編譯模式起支持直接使用本地背景圖和字體。

  • 網絡路徑必須加協議頭 https

  • http://www.iconfont.cn 上拷貝的代碼,默認是沒加協議頭的。

  • http://www.iconfont.cn 上下載的字體文件,都是同名字體(字體名都叫iconfont,安裝字體文件時可以看到),在nvue內使用時需要注意,此字體名重復可能會顯示不正常,可以使用工具修改。

  • 使用本地路徑圖標字體需注意:

    1. 為方便開發者,在字體文件小於 40kb 時,uni-app 會自動將其轉化為 base64 格式;

    2. 字體文件大於等於 40kb,仍轉換為 base64 方式使用的話可能有性能問題,如開發者必須使用,則需自己將其轉換為 base64 格式使用,或將其挪到服務器上,從網絡地址引用;

    3. 字體文件的引用路徑推薦使用以 ~@ 開頭的絕對路徑。

       @font-face {
           font-family: test1-icon;
           src: url('~@/static/iconfont.ttf');
       }
      

使用示例

將字體圖標復制到項目的static目錄中

image-20210316163950962

app.vue中引入,在這里引入相當於全局引入

@import url("./static/fonts/iconfont.css");

image-20210316164113742

修改字體的引入路徑,要符合這個

字體文件的引用路徑推薦使用以 ~@ 開頭的絕對路徑。

image-20210316164249233

在頁面中使用

例:

<view class="iconfont icon-tupian"></view>

完整頁面

<template>
	<view>
		<view class="iconfont icon-tupian"></view>
	</view>
</template>

<script>
</script>

<style>
</style>

效果

image-20210316164433303

如何使用scss或者less

scss使用文檔:https://www.sass.hk/docs/

HBuilderX的配置

首先要確保,你安裝了相關的編譯插件如scss插件

image-20210316165351858

頁面使用

在vue文件下的style標簽添加lang="scss"屬性即可使用

例:使用uni.scss中的變量設置樣式

uni.scss文件中加入變量

$global-color: red;

image-20210316170208068

style標簽添加lang="scss"屬性

<style lang="scss">

頁面使用

background: $global-color;

完整的頁面

<template>
	<view>
		<view>
			樣式的學習
		</view>
		<view class="box1">
			測試文字
			<text>123</text>
		</view>
		<view class="iconfont icon-tupian"></view>
	</view>
</template>

<script>
</script>

<style lang="scss">
	@import url("./a.css");
	.box1{
		width: 375rpx;
		height: 375rpx;
		background: $global-color;
		font-size: 30rpx;
		color: #fff;
		text{
			color: pink;
		}
	}
</style>

效果

image-20210316170438566


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM