ホームページ > ウェブフロントエンド > uni-app > uni-app がページスタイル、設定ファイル、ライフサイクルを説明します

uni-app がページスタイル、設定ファイル、ライフサイクルを説明します

coldplay.xixi
リリース: 2021-01-06 09:35:11
転載
3293 人が閲覧しました

uni-app 開発チュートリアル コラムではページ スタイル、構成ファイル、ライフ サイクルを紹介します

uni-app がページスタイル、設定ファイル、ライフサイクルを説明します

推奨 (無料): ユニアプリ開発チュートリアル

記事ディレクトリ

  • まえがき
  • 1. ページ スタイルとレイアウト
    • 1. サイズ単位
    • 2. スタイルのインポート
    • ##3. インライン スタイル
    • 4. セレクター
    • 5. グローバル スタイルとローカル スタイル
  • 2. 設定ファイル
    • 1. ページ ページの設定.json
      • globalStyle
      • pages
      • tabBar
      • condition
    • 2.表示構成マニフェスト.json
    3. ライフ サイクル
  • ##概要
  • 前書き
この記事最初に、サイズの単位、スタイルのインポート、インライン スタイルとセレクターなどを含む、uni-app のページ スタイルとレイアウトを紹介します。次に、構成項目と 2 つの構成ファイル、pages.json とmanifest.json の基本的な使用法を紹介します。最後に、ライフサイクルの基本的な使い方を簡単に紹介します。

1. ページ スタイルとレイアウト

1. サイズ単位

uni-app フレームワークは現在、長さの単位のみをサポートしています

px%

。従来の Web ページとは異なり、px は

ベース幅 (ユニアプリのベース幅は 750px) に対する相対的な単位であり、モバイル画面に適応されています。原理は同様です。つまり、開発者は、異なる画面サイズのデバイスに適応する必要はなくなり、デザイン ドラフトに従ってフレーム スタイルの px 値を決定するだけで済みます。 デザイン案の1pxとフレームスタイルの1pxの換算式は、 デザイン案の1px / デザイン案のベース幅 = フレームスタイルの1px / 750px つまり、幅の計算式はユニアプリのページ要素の幅は 750px * デザイン案の要素の幅/デザイン案のベース幅です。
例: デザインドラフトの幅が 640px で、デザインドラフト上の要素 A の幅が 100px の場合、ユニアプリの要素 A の幅を設定する必要があります。 750 * 100 / 640
、つまり 117px;

デザイン ドラフトの幅が 375px で、デザイン ドラフト上の要素 B の幅が 200px の場合、要素 B の幅は 117px になります。 -app は
750 * 200 / 375

(400px) に設定する必要があります。
2. スタイルのインポート

@import ステートメントを使用して外部スタイル シートをインポートし、その後に @import を実行します。

インポートする必要がある外部スタイル シートの

相対パス は、ステートメントを ; で終了します。 例:

<style>
    @import "../../common/uni.css";
    .uni-card {
        box-shadow: none;
    }</style>
ログイン後にコピー
3. インライン スタイル

フレームワーク コンポーネントは、コンポーネントのスタイルを制御するための style 属性と class 属性の使用をサポートしています:

(1) class はスタイルルールの指定に使用され、その属性値はスタイルルール内のクラスセレクタ名(スタイルクラス名)の集合です。スタイルクラス名に .

を含める必要はありません。 、スタイル クラス名はスペースで区切られます。

通常、
static
スタイルはクラスに均一に書き込まれます。 例:

<view class="normal_view" />
ログイン後にコピー

前の hello uniapp プロジェクトでは、App.vue は次のとおりです:
<script>
	export default {
		onLaunch: function() {
			console.log(&#39;App Launch&#39;)
		},
		onShow: function() {
			console.log(&#39;App Show&#39;)
		},
		onHide: function() {
			console.log(&#39;App Hide&#39;)
		}
	}</script><style>
	/*每个页面公共css */
	.red{
		color:#007AFF;
	}</style>
ログイン後にコピー
pages/index/index.vue は次のとおりです:
<template>
	<view class="content">
		<image class="logo" src="/static/logo.png"></image>
		<view class="text-area">
			<text class="title">{{title}}</text>
		</view>
		<view class="red">
			hello, corley		</view>
	</view></template><script>
	export default {
		data() {
			return {
				title: &#39;Hello&#39;
			}
		},
		onLoad() {

		},
		methods: {

		}
	}</script><style>
	.content {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}

	.logo {
		height: 200rpx;
		width: 200rpx;
		margin-top: 200rpx;
		margin-left: auto;
		margin-right: auto;
		margin-bottom: 50rpx;
	}

	.text-area {
		display: flex;
		justify-content: center;
	}

	.title {
		font-size: 36rpx;
		color: #8f8f94;
	}</style>
ログイン後にコピー

再修正 コンパイルして実行すると、WeChat Developer Tools Simulator のミニ プログラム ページは次のようになります。

App.vue で定義されたスタイルに、インデックスページに影響を与えます。


(2) styleuniapp style class style は

dynamic style

を受け取り、実行時に解析されます。レンダリング速度への影響を避けるため、style に静的スタイルを書き込むことは避けてください。

例:

<view   style="max-width:90%" />
ログイン後にコピー

4. セレクター

現在サポートされているセレクターは次のとおりです:

セレクター

例意味備考.introclass="intro" を持つすべてのコンポーネントを選択します。id ​​を持つコンポーネントを選択します="firstname"すべてのビュー コンポーネントを選択すべてのドキュメントのビュー コンポーネントとすべてのチェックボックス コンポーネントを選択します##::afterview::afterビュー コンポーネントの後にコンテンツを挿入しますWeChat アプレットのみ 5 つのアプリで有効です::beforeview::beforeビュー コンポーネントの前にコンテンツを挿入しますWeChat プログラムと 5 つのアプリでのみ有効になります# ##################################

5.全局样式与局部样式

定义在 App.vue 中的样式为全局样式,作用于每一个页面,如前面在App.vue中定义的全局样式对index页面也有效;
在 pages 目录下 的 vue 文件中定义的样式为局部样式,只作用在对应的页面,并会覆盖 App.vue 中相同的选择器,如在index页面中自定义的样式。
同时,App.vue中也可以通过@import语句导入外联样式,同样作用于每一个页面。

二、配置文件

uni-app中一般以json的形式定义配置文件,如pages.json、manifest.json等,其中pages.json更偏向小程序,manifest.json更偏向App。

1.页面配置pages.json

pages.json文件用来对uni-app进行全局配置,主要对接小程序,决定页面文件的路径、窗口表现、设置多标签等。

pages.json常见配置项列表如下:

##.class
Noneid#firstname
Noneelementview
None要素、要素ビュー、チェックボックス
なし
属性类型必填与否描述
globalStyleObject设置默认页面的窗口表现
pages ObjectArray设置页面路径及窗口表现
tabBarObject设置底部 tab 的表现
conditionObject启动模式配置

一个包含了上述所有配置选项的pages.json示例如下:

{
  "pages": [{
    "path": "pages/component/index",
    "style": {
      "navigationBarTitleText": "组件"
    }
  }, {
    "path": "pages/API/index",
    "style": {
      "navigationBarTitleText": "接口"
    }
  }, {
    "path": "pages/component/view/index",
    "style": {
      "navigationBarTitleText": "view"
    }
  }],
  "globalStyle": {
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "演示",
    "navigationBarBackgroundColor": "#F8F8F8",
    "backgroundColor": "#F8F8F8"
  },
  "tabBar": {
    "color": "#7A7E83",
    "selectedColor": "#3cc51f",
    "borderStyle": "black",
    "backgroundColor": "#ffffff",
    "list": [{
      "pagePath": "pages/component/index",
      "iconPath": "static/image/icon_component.png",
      "selectedIconPath": "static/image/icon_component_HL.png",
      "text": "组件"
    }, {
      "pagePath": "pages/API/index",
      "iconPath": "static/image/icon_API.png",
      "selectedIconPath": "static/image/icon_API_HL.png",
      "text": "接口"
    }]
  },
  "condition" : {
		"current": 0,
		"list": [
			{
				"name": "", 
				"path": "",
				"query": ""
			}
		]
	}}
ログイン後にコピー

下面进一步解释各配置项的含义。

globalStyle

用于设置应用的状态栏、导航条、标题、窗口背景色等,对所有页面生效。
具体参数和含义如下:

参数类型默认值含义
navigationBarBackgroundColorHexColor#000000导航栏背景颜色
navigationBarTextStyleStringwhite导航栏标题颜色,仅支持 black/white
navigationBarTitleTextString导航栏标题文字内容
navigationStyleStringdefault导航栏样式,仅支持 default/custom
backgroundColorHexColor#ffffff窗口的背景色,对微信小程序有效

说明:
navigationStyle只在pages.json->globalStyle 中设置生效,并且,该参数设置为custom后,所有窗口均无导航栏。

pages.json修改如下:

{
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "uni-app"
			}
		}
	],
	"globalStyle": {
		"navigationBarTextStyle": "white",
		"navigationBarTitleText": "hello uniapp",
		"navigationBarBackgroundColor": "#ff557f",
		"backgroundColor": "#fffae8"
	},
	"condition" : { //模式配置,仅开发期间生效
		"current": 0, //当前激活的模式(list 的索引项)
		"list": [
			{
				"name": "", //模式名称
				"path": "", //启动页面,必选
				"query": "" //启动参数,在页面的onLoad函数里面得到
			}
		]
	}}
ログイン後にコピー

显示:
uniapp config pages.json globalstyle

显然,导航栏的背景颜色已经生效。

pages

接收一个数组,来指定应用由哪些页面组成。每一项代表对应页面的信息,应用中新增、减少或修改页面,都需要对pages数组进行同步修改。

说明:
在指定路径时,文件名不需要写后缀,框架会自动寻找路径下的页面资源;
pages节点的第一项为应用入口页(即首页),所以在开发多个页面时,可以把当前开发的页面放到第一项,便于在微信开发者工具中查看调试。

新建一个页面过程如下:
在pages目录下面新建about目录,下新建about.vue如下:

<template>
	<view class="content">
		about...	</view></template><script>
	export default {
		data() {
			return {
				title: &#39;About&#39;
			}
		},
		onLoad() {

		},
		methods: {

		}
	}</script><style>
	.content {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}

	.logo {
		height: 200rpx;
		width: 200rpx;
		margin-top: 200rpx;
		margin-left: auto;
		margin-right: auto;
		margin-bottom: 50rpx;
	}

	.text-area {
		display: flex;
		justify-content: center;
	}

	.title {
		font-size: 36rpx;
		color: #8f8f94;
	}</style>
ログイン後にコピー

将其注册到pages.json如下:

{
	"pages": [ //pages数组中第一项表示应用启动页
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "Uni Index"
			}
		},
		{
			"path": "pages/about/about",
			"style": {
				"navigationBarTitleText": "Uni About"
			}
		}
	],
	"globalStyle": {
		"navigationBarTextStyle": "white",
		"navigationBarTitleText": "hello uniapp",
		"navigationBarBackgroundColor": "#ff557f",
		"backgroundColor": "#fffae8"
	},
	"condition" : { //模式配置,仅开发期间生效
		"current": 0, //当前激活的模式(list 的索引项)
		"list": [
			{
				"name": "", //模式名称
				"path": "", //启动页面,必选
				"query": "" //启动参数,在页面的onLoad函数里面得到
			}
		]
	}}
ログイン後にコピー

其中,pages数组中的每一个page还可以通过style参数定义当前页面的样式,来设置每个页面的状态栏、导航条、标题、窗口背景色等,具体参数如下:

参数类型默认值含义
navigationBarBackgroundColorHexColor#000000导航栏背景颜色,如"#000000"
navigationBarTextStyleStringwhite导航栏标题颜色,仅支持 black/white
navigationBarTitleTextString导航栏标题文字内容
backgroundColorHexColor#ffffff窗口的背景色,对微信小程序、百度小程序、字节跳动小程序有效
backgroundTextStyleStringdark下拉 loading 的样式,仅支持 dark/light
enablePullDownRefreshBooleanfalse是否开启下拉刷新
onReachBottomDistanceNumber50页面上拉触底事件触发时距页面底部距离,单位为px
navigationStyleStringdefault导航栏样式,仅支持 default/custom,custom 模式可自定义导航栏,只保留右上角胶囊状的按钮,对微信小程序 7.0+、百度小程序、H5、App(2.0.3+)有效
backgroundColorTopString#ffffff顶部窗口的背景色,仅iOS平台有效
backgroundColorBottomString#ffffff底部窗口的背景色,仅iOS平台有效

pages.json中给page定义style如下:

{
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "Uni Index",
				"backgroundColor": "#F0AD4E",
				"navigationBarTextStyle":"black"
			}
		},
		{
			"path": "pages/about/about",
			"style": {
				"navigationBarTitleText": "Uni About"
			}
		}
	],
	"globalStyle": {
		"navigationBarTextStyle": "white",
		"navigationBarTitleText": "hello uniapp",
		"navigationBarBackgroundColor": "#ff557f",
		"backgroundColor": "#fffae8"
	},
	"condition" : { //模式配置,仅开发期间生效
		"current": 0, //当前激活的模式(list 的索引项)
		"list": [
			{
				"name": "", //模式名称
				"path": "", //启动页面,必选
				"query": "" //启动参数,在页面的onLoad函数里面得到
			}
		]
	}}
ログイン後にコピー

显示:
uniapp config pages.json pages style

tabBar

如果应用是一个多 tab 应用,可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页。

常见参数和含义如下:

属性类型必填与否默认值含义
colorHexColortab上的文字默认颜色
selectedColorHexColor无 tab上的文字选中时的颜色
backgroundColorHexColortab的背景色
borderStyleStringblacktabbar 上边框的颜色,仅支持 black/white
listArraytab 的列表,最少2个、最多5个 tab
positionStringbottom可选值 bottom、top

说明:
当设置 position 为 top 时,将不会显示 icon;
tabBar 中的 list 是一个数组,只能配置最少2个、最多5个 tab,tab 按数组的顺序排序,数组中的每个项都是一个对象,其属性值如下:

属性类型必填与否说明
pagePathString页面路径,必须在 pages 中先定义
textStringtab
iconPathString图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px,当 postion 为 top 时,此参数无效,不支持网络图片
selectedIconPathString选中时的图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px ,当 postion 为 top 时,此参数无效

在static目录下新建imgs目录专门用于保存图片资源,下面放4张图片,再在pages.json中定义tabBar如下:

{
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "Uni Index",
				"backgroundColor": "#F0AD4E",
				"navigationBarTextStyle":"black"
			}
		},
		{
			"path": "pages/about/about",
			"style": {
				"navigationBarTitleText": "Uni About"
			}
		}
	],
	"globalStyle": {
		"navigationBarTextStyle": "white",
		"navigationBarTitleText": "hello uniapp",
		"navigationBarBackgroundColor": "#ff557f",
		"backgroundColor": "#fffae8"
	},
	"tabBar": {
		"color":"#F0AD4E",
		"selectedColor":"#007AFF",
		"backgroundColor":"#FFFFFF",
		"list": [
			{
				"pagePath":"pages/index/index",
				"iconPath":"static/imgs/index_0.png",
				"selectedIconPath":"static/imgs/index_1.png",
				"text": "首页"
			},
			{
				"pagePath":"pages/about/about",
				"iconPath":"static/imgs/about_0.png",
				"selectedIconPath":"static/imgs/about_1.png",
				"text":"关于我们"
			}
		]
	},
	"condition" : { //模式配置,仅开发期间生效
		"current": 0, //当前激活的模式(list 的索引项)
		"list": [
			{
				"name": "", //模式名称
				"path": "", //启动页面,必选
				"query": "" //启动参数,在页面的onLoad函数里面得到
			}
		]
	}}
ログイン後にコピー

此时显示:
uniapp config pages.json pages tabbar

可以看到,此时已经可以显示不同的标签页,并且可以进行切换。

如需图标等静态资源,可以直接点击加QQ群 uni-app がページスタイル、設定ファイル、ライフサイクルを説明します963624318 ,在群文件夹uni-app入门教程中下载即可。

condition

启动模式配置,仅开发期间生效,用于模拟直达页面的场景。
例如小程序转发后,用户点击所打开的页面。

属性和含义如下:

属性类型是否必填描述
currentNumber当前激活的模式,list节点的索引值
listArray启动模式列表

其中,list属性如下:

属性类型是否必填描述
nameString启动模式名称
pathString启动页面路径
queryString启动参数,可在页面的 onLoad 函数里获得

说明:
在App里真机运行可直接打开配置的页面,微信开发者工具里需要手动改变编译模式。

例如,pages.json如下:

{
	"pages": [ //pages数组中第一项表示应用启动页
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "Uni Index",
				"backgroundColor": "#F0AD4E",
				"navigationBarTextStyle":"black"
			}
		},
		{
			"path": "pages/about/about",
			"style": {
				"navigationBarTitleText": "Uni About"
			}
		}
	],
	"globalStyle": {
		"navigationBarTextStyle": "white",
		"navigationBarTitleText": "hello uniapp",
		"navigationBarBackgroundColor": "#ff557f",
		"backgroundColor": "#fffae8"
	},
	"tabBar": {
		"color":"#F0AD4E",
		"selectedColor":"#007AFF",
		"backgroundColor":"#FFFFFF",
		"list": [
			{
				"pagePath":"pages/index/index",
				"iconPath":"static/imgs/index_0.png",
				"selectedIconPath":"static/imgs/index_1.png",
				"text": "首页"
			},
			{
				"pagePath":"pages/about/about",
				"iconPath":"static/imgs/about_0.png",
				"selectedIconPath":"static/imgs/about_1.png",
				"text":"关于我们"
			}
		]
	},
	"condition": { //模式配置,仅开发期间生效
	    "current": 0, //当前激活的模式(list 的索引项)
	    "list": [{
	            "name": "index", //模式名称
	            "path": "pages/index/index", //启动页面,必选
	            "query": "interval=4000&autoplay=false" //启动参数,在页面的onLoad函数里面得到。
	        },
	        {
	            "name": "about", //模式名称
	            "path": "pages/about/about", //启动页面,必选
	            "query": "interval=4000&autoplay=false" //启动参数,在页面的onLoad函数里面得到。
	        }
	    ]
	}}
ログイン後にコピー

显示:
uniapp config pages.json condition

显然,此时可以在微信开发者工具根据定义的启动模式名称来选择页面,同时传递参数值。

2.显示配置manifest.json

manifest.json文件是应用的配置文件,用于指定应用的名称、图标、权限等,更偏向于Android、iOS等App配置。

常见配置项列表如下:

属性类型描述
nameString应用名称
appidString应用标识,新建uni-app项目时DCloud云端分配
descriptionString应用描述
versionNameString版本名称,例如1.0.0
versionCodeString版本号,例如36
app-plusObjectApp特有配置
quickappObject快应用特有配置,即将支持
mp-weixinObject微信小程序特有配置
mp-baiduObject百度小程序特有配置
mp-alipayObject支付宝小程序未提供可配置项

其中,app-plus常见属性和含义如下:

属性类型含义
modulesObject权限模块
distributeObjectApp发布信息

其中,modules属性常见的可配置的权限模块如下:

名称描述
Contacts系统通讯录
Fingerprint指纹识别
Maps地图
Messaging短彩邮件消息
OAuth登录授权
Payment支付
Push消息推送
Share社交分享
Speech语音识别
Statistic统计
VideoPlayer视频播放
LivePusher直播推流

distribute属性常见的配置如下:

属性类型描述
androidObjectAndroid应用配置
iosObjectiOS应用配置
sdkConfigsObjectSDK配置

说明:
manifest.json文件的配置,推荐在 HBuilderX 提供的可视化操作界面完成;
部分配置在打包时的操作界面补全,例如证书等信息;
Native.js权限部分会根据配置的模块权限,在打包后自动填充;
部分modules是默认的,不需要进行配置。

mp-weixin常见配置项和含义如下:

属性类型含义
appidString微信小程序的AppID,需要登录https://mp.weixin.qq.com/申请
usingComponentsBoolean是否启用自定义组件模式,v1.8.0+,默认为false
settingObject微信小程序项目设置
functionalPagesBoolean微信小程序是否启用插件功能页,默认关闭

在BuilderX编辑器中查看manifest.json文件如下:
uniapp config manifest

可以看到,除了通过源码视图定义manifest.json配置项,还可以使用可视化界面操作。

三、生命周期

不论是app还是小程序,生命周期是非常重要的特性,即对象从被创建到最后被销毁的整个过程。
uni-app支持如下页面生命周期函数:

函数含义
onLoad监听页面加载,其参数为上个页面传递的数据,参数类型为object(用于页面传参)
onShow监听页面显示
onReady监听页面初次渲染完成
onHide监听页面隐藏
onUnload监听页面卸载
onPullDownRefresh监听用户下拉动作
onReachBottom页面上拉触底事件的处理函数
onShareAppMessage用户点击右上角分享 微信小程序
onPageScroll监听页面滚动
onTabItemTap当前是 tab 页时,点击 tab 时触发

index.vue如下:

<template>
	<view class="content">
		<image class="logo" src="/static/logo.png"></image>
		<view class="text-area">
			<text class="title">{{title}}</text>
		</view>
		<view class="red">
			hello, corley		</view>
	</view></template><script>
	export default {
		data() {
			return {
				title: &#39;Hello&#39;
			}
		},
		onLoad() {
			console.log(&#39;index onload&#39;)
		},
		onShow() {
			console.log(&#39;index onshow&#39;)
		},
		onHide() {
			console.log(&#39;index onhide&#39;)
		},
		methods: {

		}
	}</script><style>
	.content {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}

	.logo {
		height: 200rpx;
		width: 200rpx;
		margin-top: 200rpx;
		margin-left: auto;
		margin-right: auto;
		margin-bottom: 50rpx;
	}

	.text-area {
		display: flex;
		justify-content: center;
	}

	.title {
		font-size: 36rpx;
		color: #8f8f94;
	}</style>
ログイン後にコピー

about.vue如下;

<template>
	<view class="content">
		about...	</view></template><script>
	export default {
		data() {
			return {
				title: &#39;About&#39;
			}
		},
		onLoad() {
			console.log(&#39;about onload&#39;)
		},
		onShow() {
			console.log(&#39;about onshow&#39;)
		},
		methods: {

		}
	}</script><style>
	.content {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}

	.logo {
		height: 200rpx;
		width: 200rpx;
		margin-top: 200rpx;
		margin-left: auto;
		margin-right: auto;
		margin-bottom: 50rpx;
	}

	.text-area {
		display: flex;
		justify-content: center;
	}

	.title {
		font-size: 36rpx;
		color: #8f8f94;
	}</style>
ログイン後にコピー

运行测试如下:
uniapp lifecycle
显然,在切换不同页面时,会调用相应的生命周期函数打印出不同的日志信息。

总结

uni-app对于样式有着自己的规定,比如尺寸单位,但是与HTML5也存在着很多共同点,体现在样式导入、选择器、全局样式与局部样式等方面。同时对于小程序和App有特定的配置文件进行配置。生命周期可用于定义页面在不同阶段、不同情境下的操作。

更多编程相关知识,请访问:编程教学!!

以上がuni-app がページスタイル、設定ファイル、ライフサイクルを説明しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート