vue_music:排行榜rank中top-list.vue中样式的实现:class

排行榜的歌曲列表,根据排名渲染不同的样式,同时需要考虑分辨率的2x 3x图

  1. 不同的样式——:class
  2. 考虑分辨率的2x 3x图——需要在stylu中的mixin中bgImage根据屏幕分辨率选择图片

1.功能


<div class="rank" v-show="rank">
  <span :class="getRankCls(index)">{{getRankText(index)}}</span>
</div>

在vue中绑定HTML Class,除了数组,对象语法,也可以使用函数返回值(不必使用v-if v-else等复杂逻辑)

在methods中定义,返回相应的class


getRankCls(index) {
  if (index <= 2) {
    return `icon icon${index}`
  } else {
    return 'text'
  }
},
getRankText(index) {
  if (index > 2) {
    return index + 1
  }
}

2.stylu处理分辨率


.icon
      display: inline-block
      width: 25px
      height: 24px
      background-size: 25px 24px
      &.icon0
        bg-image('first')
      &.icon1
        bg-image('second')
      &.icon2
        bg-image('third')

这里边重要的是bg-image函数


bg-image($url)
    background-image: url($url + "@2x.png")
    @media (-webkit-min-device-pixel-radio: 3),(min-device-pixel-radio: 3)
        background-image: url($url + "@3x.png")

device-pixel-radio:屏幕分辨率从而加载不同的图片

原文地址:https://segmentfault.com/a/1190000016926581

原文地址:https://www.cnblogs.com/lalalagq/p/9921921.html

时间: 2024-10-09 20:07:12

vue_music:排行榜rank中top-list.vue中样式的实现:class的相关文章

在vue中利用vue-qr插件动态生成二维码并嵌入LOGO

收到需求要生成二维码的时候刚进项目组不久,接触vue也才一两个星期,还处于懵逼状态. 本小白的第一反应就是百度二维码的生成方法,网上有很多大神给出解决方案,最开始本小白以为是在后台生成图片然后传到前台页面,后来发现可以直接在前端用js生成,网上查到的大部分都是用jquery.qrcode.js配合utf.js(为了支持中文)和jquery-1.8.0.js来实现,亲测可行(但本白只在原生HTML中实现,vue中死活报错:"找不到qrcode方法",是不是本小白没找准姿势,哪位大神求告知

vue中移动端适配

最近需要完全新建vue项目,基于vue-cl3搭建项目框架时,又开始纠结px,rem等单位问题,看了很多博客 目前最好用的单位是rem.vw 目前最常用的适配方案是: 普通元素:按照设计稿大小,使用px,再利用工具转化为rem font字体大小:使用px不进行rem转化,对不同的dpr分别设置大小,类似如下: div { width: 1rem; height: 0.4rem; font-size: 12px; // 默认写上dpr为1的fontSize } [data-dpr="2"

vue切换样式

在vue中使用事件来切换绑定的class样式,在vue-cli脚手架中的Home.vue中 <template> <div id="main"> <li v-for="v in news"> <span :class="v.status ? 'success' : 'error del'">{{v.title}}</span> <button @click="switch

vue中使用vue-echarts

一.先说在原生里怎么使用echarts <!-- 1.引入echarts文件 --> <script src="echarts.min.js"></script> <!-- 准备容器 --> <div style="width: 600px;height:400px;" id="main"></div> //基于dom,初始化echarts实例 var myChart = e

vue中使用raphael.js实现地图绘制

一.效果图 二.在vue中引入raphael.js npm i raphael -S 三.封装一个名为StreetMap的组件,代码如下 1 <template> 2 <div> 3 <div id='streetMap'> 4 <div class="tips" v-show="tipsShow" :style="tipsStyle"> 5 <span v-html="tipsCo

better-scroll在vue中的使用

一.介绍 关于better-scroll的原文详细介绍请参考,这里只做总结 黄老师的文章<当 better-scroll 遇见 Vue>的详细介绍 better-scroll的api:点击 better-scroll的滚动原理 <div class="wrapper"> <ul class="content"> <li>...</li> <li>...</li> ... </u

在vue中使用 layui框架中的form.render()无效解决办法

下面简单介绍在vue中使用 layui框架中的form.render()无效解决办法. 原文地址:小时刻个人技术博客 > http://small.aiweimeng.top/index.php/archives/layuiForm.html 近期开发的项目中前端ui框架用的是Layui,数据渲染使用vue去渲染,当我用vue渲染表单控件的数据时,会出现控件被禁用的情况,例如:select下拉等,于是去看文档,按照文档说的写了,结果然并卵,( ̄▽ ̄)".搞了半天都没搞好.然后在百度搜索了v

vue中使用高德地图

1.安装 cnpm install vue-amap --save 2.main.js 中引入 import VueAMap from 'vue-amap' Vue.use(VueAMap) VueAMap.initAMapApiLoader({ key: '3ebdb3c7a684a4e64f39ddd306056522', plugin: ['AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PlaceSe

vue中引入Tinymce富文本编辑器

最近想在项目上引入一个富文本编辑器,之前引入过summernote,感觉并不太适合vue使用, 然后在网上查了查,vue中使用Tinymce比较适合, 首先,我们在vue项目的components文件夹中加入如下几个文件 首先看一下Tinymce/dynamicLoadScript.js的内容: let callbacks = [] function loadedTinymce() { // to fixed https://github.com/PanJiaChen/vue-element-a