当前位置: 首页 > news >正文

单页网站做cpa长春百度推广公司

单页网站做cpa,长春百度推广公司,怎样建网站赚钱,开一家互联网公司需要多少钱一、原理 rem单位代表的是根节点的font-size大小,所以当我们在页面上使用rem去替代px的时候,就可以通过修改根节点font-size的值,动态地让页面上的元素根据不同浏览器宽高下去实现变化。 二、工具 1.postcss-pxtorem 作用:在编…

一、原理

rem单位代表的是根节点的font-size大小,所以当我们在页面上使用rem去替代px的时候,就可以通过修改根节点font-size的值,动态地让页面上的元素根据不同浏览器宽高下去实现变化。

二、工具

1.postcss-pxtorem

作用:在编译打包代码的时候,帮助我们把页面上的px单位转化为rem单位。因为设计图一般是给一个固定的尺寸,所有元素都统一以px为单位提供,所以一般情况下我们为了尽可能还原设计图,都一一对应地按同样的数值去实现页面,最后为了高效率自动化地将对应的px都转化为rem,所以我们必须使用这款插件。

依赖:使用该插件所需要的几个依赖。
在这里插入图片描述

2.flexible.js
作用:根据浏览器的可视窗口大小,动态地去设置根节点font-size的值,也就是rem的基准值。实现各元素根据不同屏幕大小与设计图的宽高比例进行动态地放大缩小。

(function (win, lib) {var doc = win.documentvar docEl = doc.documentElementvar metaEl = doc.querySelector('meta[name="viewport"]')var flexibleEl = doc.querySelector('meta[name="flexible"]')var dpr = 0var scale = 0var tidvar flexible = lib.flexible || (lib.flexible = {})if (metaEl) {console.warn('将根据已有的meta标签来设置缩放比例')var match = metaEl.getAttribute('content')// eslint-disable-next-line no-useless-escape.match(/initial\-scale=([\d\.]+)/)if (match) {scale = parseFloat(match[1])dpr = parseInt(1 / scale)}} else if (flexibleEl) {var content = flexibleEl.getAttribute('content')if (content) {// eslint-disable-next-line no-useless-escapevar initialDpr = content.match(/initial\-dpr=([\d\.]+)/)// eslint-disable-next-line no-useless-escapevar maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/)if (initialDpr) {dpr = parseFloat(initialDpr[1])scale = parseFloat((1 / dpr).toFixed(2))}if (maximumDpr) {dpr = parseFloat(maximumDpr[1])scale = parseFloat((1 / dpr).toFixed(2))}}}if (!dpr && !scale) {// var isAndroid = win.navigator.appVersion.match(/android/gi);var isIPhone = win.navigator.appVersion.match(/iphone/gi)var devicePixelRatio = win.devicePixelRatioif (isIPhone) {// iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {dpr = 3} else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)) {dpr = 2} else {dpr = 1}} else {// 其他设备下,仍旧使用1倍的方案dpr = 1}scale = 1 / dpr}docEl.setAttribute('data-dpr', dpr)if (!metaEl) {metaEl = doc.createElement('meta')metaEl.setAttribute('name', 'viewport')metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no')if (docEl.firstElementChild) {docEl.firstElementChild.appendChild(metaEl)} else {var wrap = doc.createElement('div')wrap.appendChild(metaEl)doc.write(wrap.innerHTML)}}function refreshRem() {var width = docEl.getBoundingClientRect().widthif (width / dpr > 540) {width = width * dpr}var rem = width / 10docEl.style.fontSize = rem + 'px'flexible.rem = win.rem = rem}win.addEventListener('resize',function () {clearTimeout(tid)tid = setTimeout(refreshRem, 300)},false)win.addEventListener('pageshow',function (e) {if (e.persisted) {clearTimeout(tid)tid = setTimeout(refreshRem, 300)}},false)if (doc.readyState === 'complete') {doc.body.style.fontSize = 12 * dpr + 'px'} else {doc.addEventListener('DOMContentLoaded',function () {doc.body.style.fontSize = 12 * dpr + 'px'},false)}refreshRem()flexible.dpr = win.dpr = dprflexible.refreshRem = refreshRemflexible.rem2px = function (d) {var val = parseFloat(d) * this.remif (typeof d === 'string' && d.match(/rem$/)) {val += 'px'}return val}flexible.px2rem = function (d) {var val = parseFloat(d) / this.remif (typeof d === 'string' && d.match(/px$/)) {val += 'rem'}return val}
})(window, window['lib'] || (window['lib'] = {}))

三、实现方式

把以上工具都准备好之后,便可以通过以下的方式在项目中实现响应式。

1.首先是postcss-pxtorem,当我们把依赖写进package.json之后,只需要npm install便可以将所需插件代码安装到项目当中。最后在项目根目录中创建**.postcss.js**文件,填写以下内容即可全局转化px单位。

可以看到以下得代码中,只有一行关键的配置,那就是rootValue这个参数。我们应该按照根目录结点的font-size值去填写该值,一般情况下配置flexible插件,这个值就是将设计图的分辨率/10得出来的结果。

// https://github.com/michael-ciniawsky/postcss-load-configmodule.exports = {"plugins": {"postcss-import": {},"postcss-url": {},// to edit target browsers: use "browserslist" field in package.json'autoprefixer': {},'postcss-pxtorem': {rootValue: 136.6,}}
}

2.第二步在main.js全局引入flexible.js文件,全局监听屏幕宽高,动态设置根结点font-size大小。

main.js

import '@/utils/flexible'

3.设置完前面两步,在写页面的时候只需要按照设计图的尺寸去编写页面。

四、问题

如果需要设置特定的文件夹目录下的文件,则需要在postcss.js中添加正则代码。以下方式是可以设置让pxtorem作用到某个具体的文件夹。需要注意的是这种方式只使用与pxtorem插件,像px2rem这种类似的插件是没有这个功能的。

// https://github.com/michael-ciniawsky/postcss-load-configmodule.exports = {'postcss-pxtorem': {rootValue: 136.6,propList: ['*'],// 需要过滤掉后台的所有页面,单独对前台的页面进行单位转换exclude: (e) => {if (/src(\\|\/)workplace/i.test(e)){return false}return true},}}
}
http://www.dt0577.cn/news/54667.html

相关文章:

  • 网站备案照片 多少钱长沙网站关键词推广
  • google seo网站 被kseo营销技巧培训班
  • 做得好的网站建设公司网络推广外包加手机蛙软件
  • 成都市建设交通委员会网站免费推广app平台有哪些
  • 网站建设各语言优点河南it渠道网
  • 邯郸住房和城乡建设局网站策划是做什么的
  • 中国机加工企业哪里最多百度seo教程网
  • 福州网站建?O百度小程序入口
  • 沈阳网站优化建设三只松鼠营销策划书
  • 免费源码资源源码站在线百度一下百度官网
  • 做单挣钱的网站外贸网站外链平台
  • 网站建设的目的定位盈利模式和功能站长之家源码
  • baiduspider无法访问您的网站淘宝营销推广方案
  • 自闭症网站的建设意义外链生成器
  • 如何管理网站文件广州网络推广定制
  • html网页制作过程昆明自动seo
  • 沈阳网站建设哪家好长沙好的seo外包公司
  • 做租凭网站是经营性吗学设计什么培训机构好
  • 视频网站焦点图厦门排名推广
  • 网站上的充值链接怎么做seo免费外链工具
  • 中铁建设集团有限公司门户登录网站关键词优化网站推广
  • 利用python做网站网站优化的方法
  • 哪个网站找做软件下载怎么查询百度收录情况
  • 珠海特价做网站创建网站的流程
  • b2b网站用户体验找相似图片 识别
  • 丽江网站建设c3sales网络营销公司热线电话
  • 网站如何备案流程新东方线下培训机构官网
  • 怎么把现有网站开发php近期重大新闻事件10条
  • 平面设计网站推荐常德seo
  • 东莞免费网站制作上海网站制作公司