使用Quasar设计Material和IOS风格的响应式网站

news/2024/4/28 18:37:00/文章来源:https://blog.csdn.net/weixin_34119545/article/details/88618253
GITHUB:使用Quasar设计旅游网站
文章链接:使用Quasar设计Material和IOS风格的响应式网站

Quasar

Quasar是一款基于Vue.js开发的UI框架,可以让你轻松构建网站简洁明快的界面,更重要的是它还能让你轻松做好RWD(响应式网站设计),除此之外还能帮助你加上PWA,使你的网页变成手机上的App

以下内容来自官网Quasar Framework,概括了Quasar的主要特点。

QuasarMIT许可的开源框架(基于Vue),可帮助Web开发人员创建:

  • 响应式网站
  • PWA
  • 通过Apache Cordova构建移动App
  • 多平台桌面应用程序(使用Electron

选择Quasar的5个理由

  1. 内建了MaterialIOS两种主题
  2. 组件均内建RWD快速响应
  3. 多样的基础UI组件库
  4. 自带了VuexVueRouterVuei18n(多国语系)
  5. 强大的部署工具

安装指南

首先安装Node.jsvue-cli,具体安装方法查看官网资料。

然后安装Quasarnpm install -g quasar-cli

最后搭建项目:quasar init <folder name>

取代main.jsquasar.config.js设置文件:

  • 引用Quasar内建的组件,可以不用在每个地方import components
  • i18n设置多国语系
  • icons移除注释即可使用
  • 开发模式下的HTTPS以及port设置
  • CSS动画设置
  • 其他外部插件的设置
  • PWAmanifest等设置

quasar.config.js

  • plugins

以前在Vue安装其他的plugin会在main.js里引入,而在Quasar就会取代main.js成为全部配置文件。

  • css

CSS的引入都会放在这个文件,默认的位置/src/css,所需的CSS库已经准备好,可以直接使用。

  • extra

这里是设置是否引入quasar-extras的内容。

Packagename说明
Roboto Fontroboto-fontMaterial主题的建议字体
Roboto Font Latin Extendedroboto-font-latin-extMaterial主题的建议字体
Material Iconsmaterial-iconsMaterial风格的icon
MDI (Material Design Icons)mdiMaterial风格的icon扩展
Font Awesomefontawesome自由选择icon
Ioniconsionicons ioniconsicon
Animate.cssanimations网页组件动画
  • scopeHoiting

默认true,用来提升webpack运行时的性能

  • VueRouterMode

设置Vue Router的模式,有historyhash两种值。

  • vueCompiler

包含两种Vue的编译模式vue runtime+compiler,默认只有runtime-only运行时编译

  • gzip

使网站支持gzip的格式。

  • analyze

build时会运行webpack-bundle-analyzer工具。

  • extractCSS

提取CSS到文件中。VueLoader

  • extendWebpack

dev模式中服务器的设置。

  • https
  • port

设置成指定的port,当quasar在运行dev模式时,遇到相同的port时会自己再+1

  • open

是否在dev指令执行完成后,自动开启此网站的分页在浏览器上。

Layout

quasar dev打开初始页面,页面的headerdrawer都是在layout/MyLayout.vue里。

一些常用的属性:

属性取值说明
sideString有两个值leftright,决定要出现在左边还是右边
overlayBoolean设置侧边栏弹出时是挤压q-page-container还是直接盖在上面
content-styleObject设置侧边栏的CSS
content-classString/Object/Array设置侧边栏的class
miniBoolean把侧边栏缩小到只有icon
这里的CSS要用Object的方式传入。
:content-style="{color: 'red'}"

旅游网站-Header

演示项目:

  • Toolbar
  • ToolbarTitle
  • Button
<q-layout-header><q-toolbarcolor="primary"text-color="primary"inverted><q-toolbar-title>好玩旅游网<div slot="subtitle">WeFunWeb</div></q-toolbar-title><div class="gt-xs"><q-btn class="q-mr-md" flat>精选景点</q-btn><q-btn class="q-mr-md" flat>美食地图</q-btn><q-btn class="q-mr-md" flat>夜宿晓行</q-btn><q-btn class="q-mr-md" flat>夜宿晓行</q-btn><q-btn class="q-mr-md" flat>注册</q-btn><q-btn class="q-mr-md" flat>登录</q-btn></div></q-toolbar>
</q-layout-header>

Toolbar

  • color

Quasar内建色:color-palette

/src/css/themes/common.variables.styl里面增加调色板的颜色。

  • inverted

背景色变成白色,然后使原来白色的文字变成设置的背景色

  • glossy

加上玻璃效果

QToolbarTitle

  • gt-xs

用来设置显示像素高于576px的页面样式。

  • q-mr-md

mr等于margin-right
sm就是size的值为small

其他非外观的功能属性:

  • disable:disable="true"时按钮禁用
  • label设置按钮的文字
  • type可以是buttonsubmitreset其中一种
  • loading,值为true显示读取中
  • percentage显示读取的圆圈,要跟loading一起使用
  • dark-percentage用在亮色系的按钮上

List&ListItem

修改Drawer

  • v-model="rightDrawerOpen"控制弹出侧边栏的位置
  • content-class="bg-grey-10"背景色
  • side="right"按钮设置在多边

设置了rightDrawerOpen需要加到data里。

export default {name: 'MyLayout',data () {return {rightDrawerOpen: false}}
}

手机端按钮

控制显示的classlt-sm只要像素小于sm(768px)就会显示该区域。

设置List和ListItem

使用Dark属性使得组件内容在暗色背景下更好显示

List中可用组件,这些组件需要自己去配置文件中自行引入。

  • QListHeaderList上的标题
  • QItemSeparator分割线
  • QItem
  • QItemSide可分成左右两侧的区块
  • QItemMain中间的区块
  • QItemTitle区块中的标题

旅游网站-Carousel页面轮播

建立新的首页

src/pages/下新建Index文件夹,并在此文件夹下新建Index.vue作为首页,删除原来的Index.vue文件。

修改Vue Router

src/router/routers.js修改Index.vue的路径。

建立轮播的区块

src/pages/Index下新建SectionCarousel.vue,并在Index.vue中引入。

然后再template下的q-page中加入section-carousel

<template><q-page><section-carousel></section-carousel></q-page>
</template>

开始写轮播

官方Carousel

在设置文件quasa.config.js中引入:

framework: {components: ['QCarousel','QCarouselSlide','QCarouselControl'...],
}

加入轮播的图片/页面

<template><q-carouselcolor="white"infinitearrowsautoplayheight="400px"><q-carousel-slide img-src="statics/images/papercut1.jpg"/><q-carousel-slide img-src="statics/images/papercut2.jpg"/></q-carousel>
</template>

加入文字区块

Quasar在carousel中有个子组件QCarouselControl用来自定义按钮在页面上。

根据官方文档的范例,QCarouselControl要放在QCarousel的最后面,也就是QCarouselSlide的后面。

<q-carousel-controlposition="center"slot="control-nav"slot-scope="carousel"class="carouselInput">
</q-carousel-control>

q-carousel-control中加入内容:

<div class="main"><h6 class="title">新锐旅游网站</h6><p class="subtitle">您身边的好玩专家</p><p>发现周边好玩的地方,玩得快乐,玩得精彩。</p>
</div>

加上CSS

<style lang="stylus" scoped>.carouselInput {width: 90%}.carouselInput .main {text-align centercolor: #f50057}.carouselInput .title {font-size 48px}.carouselInput .subtitle {font-size 24px}
</style>

调整手机版CSS

@media (min-width: 768px) {.carouselInput .title {font-size 48px}.carouselInput .subtitle {font-size 24px}
}@media (max-width: 768px) {.carouselInput .title {font-size 24px}.carouselInput .subtitle {font-size 16px}
}

旅游网站-搜索框

加入搜索框

input

首先到quasar.config.js中引入QInput

framework: {components: ['QInput']
}

<div class="main">后面加入q-input内容:

<q-inputinverted-lightcolor="white"placeholder="输入城市/景点 或是想去的地方":after="[{icon:'fas fa-search-location'}]"v-model="search">
</q-input>
  • inverted显示背景
  • color主题颜色
  • after用来显示输入框前后icon

最后绑定v-model="search",此时需要在data中添加value值,否则会报错。

  data() {return {search: ''}}

调整排版

使用Flex CSS调整组件长度。
<div class="row"><div class="col-md-2 col-xs-1"></div><div class="col-md-8 col-xs-10"><q-input ...></q-input></div><div class="col-md-2 col-xs-1"></div>
</div>

自动填入autocomplete

引入QAutocomplete组件:

framework: {components: ['QAutocomplete']
}

加入q-autocomplete

<q-input ...><q-autocomplete :static-data="{field: 'label', list: countries}"/>
</q-input>
  • static-data

    • field用于搜索数据的栏位
    • list搜索的数据来源

设置静态数据

countries: [{label: '广州市', icon: 'fas fa-map-marker-alt'},{label: '深圳市', icon: 'fas fa-map-marker-alt'},{label: '珠海市', icon: 'fas fa-map-marker-alt'},{label: '[网美景点]香山公园,秋季赏枫胜地', stamp: '北京市'},{label: '珠海长隆[海豚剧场]精彩不容错过!精彩变身演出抢先看', stamp: '珠海,长隆', rightTextColor: 'pink-13'}
]

自定义过滤器filter

q-autocomplete中加入filter

<q-autocomplete:static-data="{field: 'label', list: countries}":filter="advFilter"
/>

引入lodash处理filter

旅游网站-Popover弹出框

加入Popover组件

quasar.config.js中引入QPopover。Popover

  • no-focus不设焦点
  • fit弹出框跟输入框等长
  • v-show="!search"弹框和候选框不同时出现

内容排版

使用FlexCSS来进行排版。

<div class="row viewList"><div class="col-sm-4 col-xs-12"></div><div class="col-sm-4 col-xs-12"></div><div class="col-sm-4 col-xs-12"></div>
</div>

设配手机端,在CSS底部加入:

@media (max-width: 576px) {.viewList {width: 280px}
}

解决在手机像素下原来Popover不能自动fix的问。这里应该是小于Popover的fix最小宽度

设置内容(List&Item)

列表类直接用list做最快。

<div class="col-sm-4 col-xs-12"><q-list><q-list-header>热门目的地</q-list-header><q-item><q-item-main>珠海</q-item-main></q-item></q-list>
</div>

加入右侧Icon及文字

src/components下新建LIcon.vue,提升组件复用。

主要使用了q-icon来引入Font Awesome的icon

在原来的页面引入子组件

具体代码:
SectionCarousel.vue
src/components/LIcon.vue

旅游网站-Cards卡片

建立并引入第二个区块

src/pages/Index下新建SectionCards.vue组件,用来作为卡片区块。

Index.vue中引入SectionCards.vue

区块内版面规划

<div class="row"><div class="col-12"><b>本月最精选</b></div><div class="col-lg-3 col-sm-6 col-xs-12">卡片一</div><div class="col-lg-3 col-sm-6 col-xs-12">卡片二</div><div class="col-lg-3 col-sm-6 col-xs-12">卡片三</div><div class="col-lg-3 col-sm-6 col-xs-12">卡片四</div>
</div>

制作卡片

卡片内的内容都会大量重复,所以直接把卡片独立成一个组件。

src/components/下新建一个LCard.vue

quasar.config.js中引入卡片组件Cards
framework: {components: ['QCard','QCardTitle','QCardMain','QCardMedia','QCardSeparator','QCardActions']
}

卡片主要分成三个部分:

  • q-card-media放照片影片的区块
  • q-card-title卡片的标题
  • q-card-main卡片的主内容
  • q-card-actions用来放按钮等操作的区块
  • q-card-separator分隔线

SectionCards.vue中引入LCard.vue

<div class="col-lg-3 col-sm-6 col-xs-12"><l-card/>
</div>
import LCard from 'src/components/LCard.vue'
export default {components:{LCard},
}

加上Icon

继续补上评分地标Icon

让LCard的文字能从父组件引入

LCard.vue能够动态获取数据:

<template><q-card inline><q-card-media><img :src="image"/></q-card-media><q-card-title><span>{{title}}</span><div class="q-mt-sm" slot="subtitle"><l-icon:icon="'fas fa-star'":text="rate":color="'orange'"class="q-mr-md"/><span class="q-mr-sm">{{comment}}个评价</span><span>{{view}}人浏览</span></div></q-card-title><q-card-main><l-icon:icon="'fas fa-map-marker-alt'":text="locate":color="'grey'"class="q-mr-md"/></q-card-main></q-card>
</template><script>
import LIcon from 'src/components/LIcon';export default {name: "LCard",props: {image: String,title: String,rate: String,comment: String,view: String,locate: String},components: {LIcon}
}
</script>

在SectionCards设置数据

新增一个data数据monthBestList,然后在template模板中使用v-for获取数据并显示。

<template v-for="(data,index) in monthBestList"><div class="col-lg-3 col-sm-6 col-xs-12 q-pa-sm" :key="index"><l-card:title="data.title":rate="data.rate":comment="data.comment":view="data.view":locate="data.locate":image="data.image"/></div>
</template>

调整CSS及layout

旅游网站-制作景点详情页

src/pages下新建place文件夹,并在此文件夹下新建Index.vue作为文章的主要页面。

设置Vue Router

要进行页面导航/切换需要用到Vue Router。

router/routes.js中加入导航:

const routes = [{path: '/',component: () => import('layouts/MyLayout.vue'),children: [{path: '', component: () => import('pages/Index')},{path: 'Place', component: () => import('pages/Place')}]}
];

http://localhost:8080/#/place中查看效果。

加入视差(Parallax)组件

视差(Parallax)

quasar.config.js中引入QParallax组件。

<template><q-page><q-parallax :src="localData.image" :height="400"><p>{{ localData.title }}</p></q-parallax></q-page>
</template>

主题部分的页面排版

按照8格+4格进行排版:

<div class="row place-main"><div class="col-8"></div><div class="col-4"></div>
</div>

CSS补上左右margin 5%让页面看起来不会太满。

.place-main {margin-left 5%margin-right 5%
}

设置左边画面

这里要用Quasar的面包屑BreadCrumbs组件。

quasar.config.js中引入:

'QBreadcrumbs',
'QBreadcrumbsEl',

加上景点信息及评分的排版

这里按照8格+4格设定,左侧栏要设为文字靠右对齐。

加上景点信息

引入LIcon.vue图标组件:

<div class="col-8 info-left"><l-icon class="q-mt-sm" :text="'景点编号:' + localData.id" :icon="'fas fa-tag'" :color="'grey'"/><br>...
</div>

加上评分

评分组件Rating

表单组件-Field

表单字段(Field)

Field的组件有QInputQSecletQDatetimeQChipsInput

引入组件

quasar.config.js中引入组件

基本范例

<q-fieldlabel="信箱"><q-input suffix="@gmail.com" v-model="model"/>
</q-field>
  • label设置标题文字
  • icon设置标题的icon
  • icon-color设置标题icon的颜色
  • helper组件地下的辅助文字
  • error控制组件在错误时会变成红色警示
  • error-label错误时会显示的文字
  • warning控制组件是否为警告状态
  • warning-labelerror-label
  • count显示目前输入多少文字
  • inset用来为没有icon/label的栏位留空
  • orientation组件的排列方向(水平horizontal/垂直vertical
  • label-width文字区块的宽度(以12格宽度划分)假设文字的宽度要和输入一样长,则设定为6
  • dark是文字反白,适用在暗色背景下

表单组件-Chips Input

Chips Input
<q-chips-input float-label="兴趣" v-model="model" />
export default {data() {return {model: []}}
}

外观属性

  • chips-color改变chips的颜色
  • chips-bg-color改变chips的背景颜色
  • add-icon替换输入时显示在右边的enter按钮icon

基本属性

  • prefix加入前缀文字(不影响array内的值)
  • suffix加入后缀文字,可以跟前缀一起用
  • hide-underline移除原本输入框的底线
  • no-parent-field如果外面套有QField,可以避免跟QField的效果连结
  • upper-case自动转大写
  • lower-case自动转小写

大部分组件都会重复的基本属性

  • float-label悬浮标题
  • stack-label固定式标题
  • color组件颜色
  • inverted是否有背景色
  • inverted-light改善亮色背景下组件的显示
  • dark改善暗色背景下组件的显示
  • error错误
  • warning警告
  • disablereadonly类似,但是会有灰键效果

事件属性

  • @input(newVal)输入文字的同事就会触发
  • @change(newVal)数组数值改变触发
  • @clear(clearVal)数组被清空时触发
  • @duplicate(val)输入重复的值时触发
  • @add(val)输入时触发
  • @remove({index, value})其中一个组件被删除时触发

方法属性(Vue Methods)

这里的用法通常都是在组件中加入red属性,然后再其他地方使用this.$refs来对这些组件进行操作。

  • add(value)加入值到组件的数组中
  • remove(index)删除指定索引的值
  • focus()聚焦在组件上
  • select()选择组件
  • clear()清除组件中数组的值
<q-chips-input ref="myChipInput" />
addSomething() {this.$refs.myChipInput.add('Hello Quasar')
}

表单组件-Radio

引入组件QRadio,单选框(Radio)

与QField一起使用

<q-fieldlabel="黄金周去哪玩?"orientation="vertical"><q-radio v-model="model" label="去杭州" val="hangzhou"/><q-radio v-model="model" label="去北京" val="beijing"/><q-radio v-model="model" label="去成都" val="chengdu"/>
</q-field>

基本属性

  • val存储绑定变量的值
  • label组件上的文字
  • left-label设定为true时,文字会改变显示在选项的左边
  • checked-icon改变选取时的icon
  • unchecked-icon改变未选取时的icon
  • color改变组件的颜色
  • keep-color没选取时也会有颜色(默认是灰色)
  • readonly只读属性
  • disable禁用
  • dark在暗色背景时,凸显组件文字
  • no-focus不会触发聚焦事件

基本事件

  • @input选取时触发
  • @blur失去焦点(点到其他地方)时触发
  • @focus聚焦(点选该组件)时触发

表单组件-Checkbox

复选框(Checkbox)

引入组件

quasai.config.js中引入QCheckbox

复选框需要绑定数据类型为Array,也需要和QField一起使用。

基本属性

  • val数值,加入到v-model绑定的变量中
  • true-value如果model不是数组,在选取时会给modeltrue,用来取代true
  • false-value同上解析
  • indeterminate-value用来替换null
  • toggle-indeterminate使点击可以让状态在以上三个中转换

表单组件-Toggle

切换键Toggle

引入组件

quasar.config.js中引入QToggle

基本属性

  • valv-modelArray,会加在Array
  • icon如果底下两个(checke-iconunchecked-icon)icon 会被覆盖掉

表单组件-Option Group

选项组option-group

把选项写进一个Array中,然后直接用v-for全部渲染出来。

引入组件

每一步都是一样的,在quasar.config.js中引入QOptionGroup

基本范例

CheckBox

<template><q-field orientation="vertical" label="要选购的商品"><q-option-grouptype="checkbox"v-model="model":options="optionList"/></q-field>
</template><script>export default {name: "index",data() {return {model: [],optionList: [{label: '鸡蛋', value: 'egg'},{label: '海带', value: 'seaweed'},{label: '鸡腿', value: 'lag'},{label: '牛肉', value: 'beef'}]}}}
</script>

toggleradiocheckbox类似,只需要修改type属性值即可

表单组件-Datetime

时间日期输入框Datetime,有Material和IOS两种风格。

引入组件

有两个组件需要引入,一个是输入时显示,一个是默认就是显示的。分别为:

日期时间输入Datetime Input

framework: {components: ['QDatetime']
}

日期时间选择器Datetime Picker

framework: {components: ['QDatetimePicker']
}

基本操作

// Datetime Input
<q-datetime v-model="model" type="date"/>// Datetime Picker
<q-datetime-picker v-model="model" type="date"/>

基本属性

  • type,一共有三个值,默认是date

    1. date单纯日期
    2. time单纯时间
    3. datetime时间+日期
  • minimal,不显示标题
  • min max,设置能够选择的日期时间范围
<q-datetime v-model="model" type="datetime" max="2019/02/27 2:30"/>
  • format-model存储的时间格式,有四种选择:

    1. auto2019-02-27T12:01:00.000+08:00
    2. date"2019-02-27T04:00:00.000Z"
    3. number1541044860000
    4. string2019-02-27T12:01:00.000+08:00
  • format24h设为24时制的时钟

基本方法

Input

  • show()显示输入
  • hide()隐藏输入
  • toggle()切换输入
  • clear()清空model

Picker

  • setYear(val)设置年
  • setMonth(val)设置月
  • setDay(val)设置日
  • setHour(val)设置时
  • setMinute(val)设置分
  • setView(val)设置要显示的模式
  • clear()清空model

表单组件-Editor

内建的文章编辑器Editor

编辑器(WYSIWYG)

quasar.config.js中引入QEditor组件。

<q-editor v-model="model"/>

主要设置页面的属性有三个:

  • Toolbar
<q-editorv-model="model":toolbar="[['bold','italic','strike','underline'],['hr','link'],['fullscreen'],['print']]"
/>
  • Definitions

    • label要显示的文字
    • icon要显示的icon
    • tip小提示
    • cmd如果不想用默认的功能名称,可以用这个绑回你要的功能
    • handler自定义methodsfunction名称
    save: {label:'保存',handler: functionName
    }
    • disable禁用
<q-editorv-model="model":toolbar="[['bold','italic','strike','underline'],['hr','link'],['fullscreen'],['print']]":definitions="{bold:{label:'粗体',icon:null,tip:'这是粗体'}}"
/>
  • Font
<q-editor v-model="model":toolbar="[['arial','arial_black','comic_sans'],]":fonts="{arial:'Arial',arial_black:'Arial Black',comic_sans:'Comic Sans MS'}"
/>

基本事件

  • @input输入时触发
  • @fullscreen(true/false)切换全屏时触发

表单组件-Knob旋转按钮

旋转按钮(Knob)

quasar.config.js中引入QKnob组件。

<q-knobv-model="model":min="0":max="25"
><q-icon class="q-mr-xs" name="volume_up"/>{{model}}
</q-knob>

属性

  • size调整组件的大小,默认120px
  • step数值的间距
  • decimals小数点显示的位数
  • min max最小值和最大值
  • colortrack-color颜色、未到达的旋转轴颜色
  • line-width线条的宽度,默认6px

事件

  • @input(val)改变时立即触发
  • @change(val)改变时触发
  • @drag-value(val)拖动时就会触发

弹窗-Action Sheet

操作表(ActionSheet)

quasar.config.js中引入ActionSheet组件,有Material和IOS两种风格。

pluginS形式

framework: {plugins: ['ActionSheet']
}

components形式

framework: {components: ['QActionSheet']
}

作为Plugins的使用方法

Vue内

this.$q.actionSheet(configObj)

Vue外

import { ActionSheet } from 'quasar';
ActionSheet.create(configObj)
this.$q.actionSheet({title: '操作选择',grid: true, //使用格状排版(一排三个)dismissLabel: '取消', //取消按钮的文字 只有IOS主题下可用 默认是cancelactions: [{label: '抓虫',color: 'green',icon: 'fas fa-bug',handler() {console.log('抓虫大师')}},{label: '分享到微博',color: 'blue',icon: 'fas fa-weibo'},{label: '请人帮忙',color: 'black',icon: 'fas fa-alipay'}]
}).then(action => {}).watch(() => {});

作为Component的使用方法

跟上面的操作基本上一样,只是能够多监听@show@hide时间。

事件

  • @ok点选选项时触发
  • @cancel取消时触发
  • @show显示时触发
  • @hide隐藏时触发
  • @escape-key按Esc时触发

弹窗-Dialog

基本跟上面的Action Sheet一样的操作方法。

this.$q.dialog({title: '选择主菜',message: '主厨精心特制主餐请选择',color: 'red-13',ok: true,cancel: true,preventClose: true, //设置为true,除非按cancel或是ok,不然不会关闭窗口noBackdropDismiss: false, //按空白的地方不会关闭窗口noEscDismiss: false, //按Esc不会关闭窗口stackButtons: false, //为true时会将ok/cancel按钮垂直排列position: 'top', //设置窗口显示的位置//使用inputprompt: {mode: '顶级和牛帝王蟹',type: 'text'},//使用optionoptions:{type:'radio',model:'beef', //默认的选项items:[{label:'绝对不加热生牛排',value:'beef'},{label:'极地冰山沙漠鲔鱼',value:'tuna'},{label:'超级漆黑山洞野猪肉',value:'pork'}]}
}).then(action => {}).watch(() => {});

作为Component的使用方法

在配置文件中引入QDialog组件。

<q-dialog><span slot="title">标题</span><span slot="message">正文</span><span slot="body">主体</span><span slot="buttons">按钮</span>
</q-dialog>

弹窗-Modal

模态框(Modal)

引入QModal组件,另外加入directivesCloseOverlay

使用按钮或是methodmodal设为true才能打开modal

全页显示

<q-btn @click="model=true">Open</q-btn>
<q-modal v-model="model" content-css="padding: 50px" maximized><h4>想去哪里玩?</h4><p>自由行·出国度假</p><p>泰国、首尔、珠海、九寨沟</p><q-btnclass="q-mt-lg"color="primary"@click="model=false"label="订购行程"/>
</q-modal>

最小窗口minimized

设置position后会自动清除content-css定义的css,所以要在里面多一个div来做padding

<q-modal v-model="model" minimized><div style="padding: 20px">...</div>
</q-modal>

基本属性

  • minimizedmaximized设置窗口最小化或是最大化
  • no-route-dismissno-esc-dismissno-backdrop-dismiss分别为控制换页、按下Esc、按黑色背景是否会触发开闭事件
  • content-csscontent-classes,Modal内的CSS及class,在设置了position后会无效
  • position设置弹窗出来的位置
  • position-classes设置position后就要用这个来设class,默认是items-centerjustify-center
  • transitionenter-classleave-class可以用自定义的CSS来做出场的动画
  • no-refocus是否让关闭窗口时聚焦回到打开窗口前的最后一个组件

Vue方法

控制打开关闭窗口的一些方法,要搭配this.$refs.窗口名称来使用。

  • show
  • hide
  • toggle

弹窗-Notify

通知框(Notify)
this.$q.notify({message: '已保存',timeout: 5000,// type:'positive', //自带选项color: 'grey',textColor: 'blue',icon: 'fas fa-warning',avatar: 'statics/images', //这个跟icon二选一detail: '',position: 'top',actions: [{label: '',icon: '',noDismiss: true,handler() {console.log('hello world');}}],onDismiss() {console.log('warning');}
});

在Vue外使用

import {Notify} from 'quasar';Notify.create('已保存');
//方式二
Notify.create({message: '已保存'
});

进度条-Ajax Bar&Loading Bar

Ajax栏(Ajax Bar)

quasar.config.js中引入QAjaxBar组件。

基本使用

Ajax Bar

因为在每个页面都会用到,所以放在最上层App.vue

<div id="q-app"><router-view></router-view><a-ajax-bar/>
</div>
  • position设置组件位置
  • size载入条的宽度,默认4px
  • color默认red
  • reverse使进度方向相反

基本事件

  • @start开始动作时触发
  • @stop结束动作时触发

基本方法

  • start()
  • stop()

Loading Bar

进度条-Inner Loading

内部加载(Inner Loading)

注意事项

使用InnerLoading时会作用在relative-position这个class下,如果没有添加这个会变成整页。

基本操作

index.vue

<template><q-page class="q-ma-lg"><q-btn @click="$refs.myField.show()">Open</q-btn><my-field class="relative-position" ref="myField"/></q-page>
</template><script>
import MyField from './MyField';export default {name: 'PageIndex',components: {MyField}
}
</script>

MyField.vue

<template><q-fieldlabel="跨年去哪玩?"orientation="vertical"><q-radio v-model="model" label="去日本" val="japan" checked-icon="far fa-check-circle" keep-color/><q-radio v-model="model" label="去韩国" val="korea" color="green" keep-color/><q-radio v-model="model" label="在家待着" val="home" color="red" keep-color/><q-inner-loading :visible="visible"><q-spinner-gears size="50px" color="primary"></q-spinner-gears></q-inner-loading></q-field>
</template><script>
export default {name: "MyField",data() {return {model: false,visible: false}},methods: {show() {this.visible = true;setTimeout(() => {this.visible = false}, 5000)}}}
</script>

效果

CSS Helpers

空间排版CSS Spacing Classes

CSS间距类CSS Spacing Classes

基本范例

q-ma-xs
  • q作为前缀
  • ma

    • m类型,margin
    • a方向,all
  • xs范围的大小跟flex css一致

语法

q-[类型][方向]-[大小]
  • 类型

    • mmargin向外扩)
    • ppadding向内扩)
  • 方法

总共有7种选择,除了基本的t(top)r(right)l(left)b(bottom)a(all)之外,还有两种x(left+right)y(top+bottom)

  • 大小

noneauto(只能用在margin),xssmmdlgxl

阴影CSS Shadows

CSS阴影(立面图)CSS Shadows

可视范围CSS Visibility

可视范围CSS Visibility

位置排版CSS Positioning Classes

CSS定位类CSS Positioning Classes

自定义颜色

调色板(Color Palette)

src/css/app.styl文件中自定义全局CSS

新增颜色

.text-redspcolor: #D03F38
.bg-redspbackground: #D03F38  

这里textbg需要同时设定。

使用

<q-btn color="redsp">Open</q-btn>

多国语系I18n

Quasar的I18n

多国语系(I18n)

quasar.config.js中设置:

framework: {i18n: 'zh-hans'
}

读取当前语系

let lang = this.#q.i18n.getLocal()

动态设置

Quasar的切换语系不像是传统的vue-i18n直接换就能用,必须重新载入新语系的语系档。

<template><q-btn @click="setLang('zh-hans')">简体中文</q-btn>
</template><script>export default {name: "I18n",methods: {setLang(lang) {import('quasar-framework/i18n/${lang}').then(lang => {this.$q.i18n.set(lang.default)})}}}
</script>

Vue-I18n

Vue-I18n在src/i18n里面,参照已经设定的内容添加自己想要的语系。

应用

<p>{{$t('apple')}}</p>
<q-btn @click="setLang()" :label="$t('setting')"></q-btn>

动态切换语系

methods: {setLang() {this.$i18m.local = 'zh-CN'}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_798698.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html网站网址一键打包成App平台-开心App平台

开心APP在线打包平台可以快速封装网站变成APP&#xff0c;一键打包网站APP平台的出现&#xff0c;极大的降低的开发费用&#xff0c;几百块就可以制作一个体验不错的APP。 网站封装成APP的流程方便快捷&#xff01;无需懂代码&#xff0c;会上网就能制作APP&#xff01; 下面介…

网站安装打包 浏览网站[五] 附加IIS其它功能

2019独角兽企业重金招聘Python工程师标准>>> 在创建完网站与虚拟目录&#xff0c;接下来就是要浏览网站了&#xff0c;于是&#xff0c;在界面上多加一个按钮&#xff0c;点击浏览是顺势而加了: 代码就一句: Process.Start( " iexplore.exe " , string .…

24个免费图书网站

中国数字图书馆http://www.d-library.com.cn/ 瑞德超星在线图书馆 http://www.rol.cn.net/library 看不要钱&#xff0c;下载图书要花钱噢&#xff01; 全景中文图书 http://www.cnovel.com/ E书时空 &#xff08;推荐&#xff09; http://www.eshunet.com/ 大唐中文书库 http…

增加索引会锁表吗_你知道网站索引下降的原因吗?

在搜索引擎优化的过程中&#xff0c;我们很清楚没有索引的页面是不能参与排名的。指数建立后&#xff0c;指数还会继续流失&#xff0c;对排名也非常不利。当你的网站开始失去索引时&#xff0c;我们需要考虑更多&#xff0c;并提供恢复索引的解决方案。您的页面索引为何下降&a…

网站整体流程_高端网站建设为什么要选择专业建站公司?

高端网站建设为什么要选择专业建站公司&#xff1f;近期有很多企业管理层人员一直在询问一个问题&#xff0c;这个问题便是为什么企业建网站为什么要找技术专业的网站建设公司呢&#xff1f;之所以这些人会问这个问题&#xff0c;還是这些人较为关心这一网站建设十分&#xff0…

seo如何优化文章-知识交流_微信搜一搜seo|微信文章优化|微信文章seo

微信公众号排名及文章排名怎么优化|微信seo的核心原理|公众号关键词排名优化|搜索关键词排名优化|行业词优化|精准词优化|流量词优化|精准词优化|公众号排名规则❶原创文章公众号目前排名最重要的一点“原创文章”&#xff0c;公众号没有文章的话好像基本失去了存在的价值&…

音乐上传网站_抖音如何蹭热门音乐和同款道具的流量?

抖音短视频里有很多好听的背景音乐和好玩的特效&#xff0c;都是供用户使用的。而且利用这些热门的背景音乐和特效能够让你的作品质量进一步提高&#xff0c;所以创作者准备上传作品的时候就一定要选择热门的背景音乐去上传作品&#xff0c;也就是所谓的拍同款。今天我就教大家…

html+css+mysql开发tree的文档网站_前端开发——工具篇

简介&#xff1a; 整理了一些个人开发中常用的一些工具&#xff0c;及网站&#xff0c;个人感觉挺好&#xff0c;推荐。编辑器Vscode,Sublime&#xff0c;HbuildXvscodevscode 官网下载直接安装即可使用&#xff0c;默认是英文需要安装中文扩展包&#xff0c;直接在扩展中搜索C…

网站 重定向 文件名 问号_网站SEO优化方法和技巧有哪些?

一些刚做SEO行业的人都会再问网站SEO优化的方法和技巧有哪些?网站SEO怎么优化?怎么快速上排名?等等许多的问题。自己也是一个做SEO的菜鸟&#xff0c;但是也把一些网站通过自的优化做上了首页&#xff0c;对SEO也算有自己的了解。今天&#xff0c;小编就把自己总结的一些优化…

java web 获取域名_JAVA WEB项目有怎么方法能获取访问自己网站的用户的IP和主机名...

展开全部今天在搞JS(JavaScript)获取客户端IP的小程序&#xff0c;上网搜了下&#xff0c;好多在现在的系统和浏览62616964757a686964616fe58685e5aeb931333339666137器中的都无效&#xff0c;很无奈&#xff0c;在Chrome、FireFox中很少搞到直接利用ActiveX获取IP等的JS脚本。…

怎么把网站图片地址改成相对路径_网站优化九大知识点

一、网站为什么要做SEO绝大多数自己买域名、自己买空间的人应该不是仅仅把这个网站给自己看&#xff0c;那么我们怎么能让更多的人看到我们的网站呢?这里就用到了SEO&#xff0c;一个SEO做的好的网站在任何方面都能占得先机。做SEO需要考虑的9个基本知识点!二、应该如何做SEO1…

关于12306网站抢票的架构设计

12306 抢票,极限并发带来的思考 虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。 尤其是春节期间,大家不仅使用 12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。 “12306 服务”承受着这个世界上任何秒杀系…

mysql和redis用于网站活跃度_让你设计实现一个签到功能,到底用MySQL还是Redis?...

你知道的越多&#xff0c;不知道的就越多&#xff0c;业余的像一棵小草&#xff01;你来&#xff0c;我们一起精进&#xff01;你不来&#xff0c;我和你的竞争对手一起精进&#xff01;编辑&#xff1a;业余草 推荐&#xff1a;https://www.xttblog.com/?p5097一个签到功能&a…

php水印可以编辑位置,修改Discuz网站水印位置为任意(随机)位置的解决方案

相信既然你看到了这个文章&#xff0c;而且有兴趣看下去&#xff0c;就说明你已经知道了水印是什么&#xff0c;当然如果你不知道但依然保持学习的热情&#xff0c;我这里就废话一句&#xff1a;水印其实就是为了保护我们的版权&#xff0c;让其他的人看到后认为该图片是我们的…

qqshow在线试衣网站源码(php+mysql)_简单的php+mysql聊天室实现方法(附源码)

本文实例讲述了简单的phpmysql聊天室实现方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;这里介绍的程序分为 8 个文件&#xff1a;frameset框架页面:index.php显示聊天室内容页&#xff1a;show.php用户登陆页面&#xff1a;login.php用户发言页面&#xff1a;sp…

《精通PHP+MySQL动态网站开发》

&#xfeff;&#xfeff;http://product.dangdang.com/23220410.html

《HTML5移动网站与App开发实战》简介

#好书推荐##好书奇遇季#《HTML5移动网站与App开发实战》&#xff0c;京东当当天猫都有发售。定价79元&#xff0c;网店打折销售更便宜。本书内容非常系统全面&#xff0c;配套示例源码与PPT课件。 本书由浅入深出、全面系统地介绍HTML5相关技术及其在移动开发领域的应用。从基本…

发布一个网站

从tomcat角度来理解发布web网站的过程 1、下载tomcat&#xff0c;自行参考百度文章 2、查看tomcat的webapps文件目录&#xff0c;webapps目录用来存放应用程序&#xff0c;所以目录下的每一个文件夹都是一个应用程序 网站的结构 –webapps&#xff1a;tomcat服务器的web目录 –…

cdn缓存服务器有网站图片,CDN缓存服务器图片存储一致性hash算法的理解

用hash做缓存&#xff0c;假如有三台服务器&#xff0c;1,2,3&#xff0c;有三万张图片&#xff0c;我想将图片平均缓存到我三台服务器上&#xff0c;一个服务器大概一万张&#xff0c;怎么去实现这个办法呢&#xff0c;可以用hash来取余数进行操作&#xff0c;加入我们是以图片…

html静态登录界面代码_如何快速搭建静态网站

“ 在日常运用场景中&#xff0c;由于便捷、低开发成本&#xff0c;静态网站常被作为快速建站的一个备选方案&#xff0c;它可以满足许多内容相对固定的网站建站需求&#xff0c;例如企业官网(介绍、产品展示等)、个人简历网站等。因为内容不常更新&#xff0c;所以可以不带管理…