. 遮罩层盖不住
原因:这是因为textarea和input框的z-index为最高,自己写的蒙层盖不住。
处理方法:wx:if=’{{!modal}}’,弹框出现时隐藏输入框
2. 弹框中又textarea,placeholder字体位置错位
原因:弹框fixed定位,小程序兼容问题
解决方法:
3. 如果textarea在一个显示隐藏的模态框中,切记要用 hidden 而非 wx:if 。如果使用了wx:if,再次显示会重新渲染,安卓手机,textarea中的字和光标会错位。
测试A:那啥!抠图仔,线上样式怎么点着点着就出问题了。
前端:啥?线上css样式错乱了?你是不是有缓存啊!清下缓存试试。
测试A(内心戏:这抠图仔一有问题就赖缓存):清缓存后,还有啊!你看看吧!
前端:见鬼了,我本地没复现啊。
在某次迭代中,在做产品体验的时候发现从申请记录页面跳转我的订单,在切回来,发现申请记录页样式错乱了。本地调试发现没有该问题。
为什么会出现这种场景?为什么该问题测试环境会出现,本地环境未复现?
调试发现 .ant-card可以从多个chunk文件引入,切换到network面板发现,2966....chunk.css文件是在我们跳转到我的订单页面才引入的。也就是我的订单页面按需加载组件打包出来的样式文件。
到这其实就定位到问题所在了,相同组件在不同页面按需加载的时候css文件被重复打包了。
开发环境不会,是因为我们导入组件是直接导入的node_modules的es模块的文件,如图:
dynamicImport: {
loading: '@/Loading',
},
umi开启dynamicImport时,会启动按route分包,实现页面级别的按需加载,这种分包模式明显在处理antd的样式模块复用上出现了一些问题。
所以推荐项目开启该模式时,antd应该使用下面的方案二进行处理antd的样式,防止出现偶现的线上问题。
之前代码中会出现很多莫名其妙的!important去提高样式的权重,当然也有在页面级引入antd.css的,可能也是因为遇到了antd样式覆盖的问题。
// ...
optimization: {
splitChunks: {
chunks: 'all',
minSize: 30000,
minChunks: 2,
automaticNameDelimiter: '.',
cacheGroups: {
antd: {
name: 'antdesigns',
test: /[\/]node_modules[\/](antd|antd-mobile|@ant-design)[\/]/,
priority: 20,
},
vendors: {
name: 'vendors',
test({ resource }: any) {
return /[\/]node_modules[\/]/.test(resource);
},
priority: 10,
},
},
},
},
// ...
优化后如图所示,申请记录页面跳转到我的订单页面再跳回来,.ant-card并没有多产生一个css文件引入。整个dist文件包体积从116.5M到108.4M,降低了8.1M。
webpack.docschina.org/plugins/spl…
警告
选择了默认配置为了符合 Web 性能最佳实践,但是项目的最佳策略可能有所不同。如果要更改配置,则应评估所做更改的影响,以确保有真正的收益,所以我们做上述分包策略时,需要根据实际项目情况来处理。
// 下面这个配置对象代表 SplitChunksPlugin 的默认行为。
module.exports = {//...
optimization: {
splitChunks: {
// 有效值为 all,async 和 initial
chunks: 'async',
// 生成 chunk 的最小体积(以 bytes 为单位)。
minSize: 20000,
// 通过确保拆分后剩余的最小 chunk 体积超过限制来避免大小为零的模块。
minRemainingSize: 0,
// 拆分前必须共享模块的最小 chunks 数。
minChunks: 1,
// 按需加载时的最大并行请求数。
maxAsyncRequests: 30,
// 入口点的最大并行请求数。
maxInitialRequests: 30,
// 强制执行拆分的体积阈值和其他限制(minRemainingSize,maxAsyncRequests,maxInitialRequests)将被忽略。
enforceSizeThreshold: 50000,
/**
* 缓存组可以继承和/或覆盖来自 splitChunks.* 的任何选项。
* 但是 test、priority 和 reuseExistingChunk 只能在缓存组级别上进行配置。
* 将它们设置为 false以禁用任何默认缓存组。
*/
cacheGroups: {
defaultVendors: {
/**
* 控制此缓存组选择的模块。省略它会选择所有模块。
* 注:使用/是因为要同时适配unix和windows系统
*/
test: /[\/]node_modules[\/]/,
// 优先级,默认值0
priority: -10,
// 如果当前 chunk 包含已从主 bundle 中拆分出的模块,则它将被重用,而不是生成新的模块。这可能会影响 chunk 的结果文件名。
reuseExistingChunk: true,
},
default: {
minChunks: 2,
priority: -20,
reuseExistingChunk: true,
},
},
},
},
};
线上和本地运行结果不一致,一直是一件让前端开发者头痛的问题。造成这种情况的原因之一呢?是因为场景不一样,webpack提供了两种模式。
我们要杜绝发生线上和本地运行结果不一致的这种情况,需要我们深入了解项目中会用到的webpack,vite,rollup等前端工程化工具的内部打包机制。
作者:城主北宁
链接:https://juejin.cn/post/7346884660443988019
<table>标签:
<table>指的是表格,用表格来搭建界面布局,即用表格的嵌套,来搭建界面布局。
<table>布局优势:
table优势:开发时间短(使用DW开发速度快);纯table各浏览器不会有兼容问题;内容可自适应;在搜索引擎排名能靠前;
但是 table如果布局变更,需要重新开发;如果table里有div ul 等,可能会出现浏览器兼容问题;加载速度慢;table嵌套的太多,运维是非常困难的。
<div>块级(block-level)标签:
DIV是层叠样式表中的定位技术,全称DIVision,即为划分。有时可以称其为图层。
<div>布局优势:
一.精简代码,减少重构难度。
网站使用DIV+CSS布局使代码很是精简,css文件可以在网站的任意一个页面进行调用,而若是使用table表格修改部分页面却是显得很麻烦。要是一个门户网站的话,需手动改很多页面,而且看着那些表格也会感觉很乱也很浪费时间,但是使用css+div布局只需修改css文件中的一个代码即可。
二.网页访问速度
使用了DIV+CSS布局的网页与Table布局比较,精简了许多页面代码,那么其浏览访问速度自然得以提升,也从而提升了网站的用户体验度。
三.SEO优化
采用div-css布局的网站对于搜索引擎很是友好,因此其避免了Table嵌套层次过多而无法被搜索引擎抓取的问题,而且简洁、结构化的代码更加有利于突出重点和适合搜索引擎抓取。
四.浏览器兼容性
若使用table布局网页,在使用不同浏览器情况下会发生错位,而div+css则不会,无论什么浏览器,网页都不会出现变形情况。
1.流动式布局:是HTML网页默认的布局方式
特点:
1.块级元素都会在所处的包含元素内自上而下按顺序处置延伸分布,且默认状态下,块级元素占整个文档流,默认宽度为100%。
2.内联元素都会在所处的包含元素内从左到右水平分布显示,不占整个文档流。
常见的块级(block)元素有:<h1-h5> 、<table>、 <ul>、<li> 、<p> 、<form>、 ol
常见的内内联(行内)元素有:<a>、<span>、<img>、<input>、<select>、<textarea>
2.浮动布局(float)
特点:
浮动布局依靠【 浮动属性 float:left/right/... 】来使标签脱离文档流,达到两个块级元素并排显示的效果。
float:left ; 浮动脱离当前文档流浮动。
同时可以依靠【展示属性display:inline/block/inline-block】来进行行内元素和块级元素的效果切换。从而达到灵活运用块级元素和行内元素布局的效果。
3.层模型布局又叫定位布局
特点:
当我们应拥div布局是,在第一层块界面上来做第二层块界面的开发时,就要用到我们所说的定位布局。
通过运用【定位属性position:absolute/relative/fixed】 来进行第二层界面的定位布局。
网页是静态的,网页上的定位
position:absolute ;绝对定位脱离文档流,不受浮动影响,就是相对于窗体(body)边界的margin定位。
position:relative; 相对定位不脱离文档流,相对于父级标签元素的位置定位。
position:fixed;固定位置,不会受任何因素影响。
滚动条移动前
滚动条移动后
优先层显示方法:【属性:z-index:0/1/2...】
特点: 数值越大,越优先显示。
注意:只有元素使用了position属性的,才具有z-index属性。
本文部分内容来自网络,如有侵权,请联系修改。
*请认真填写需求信息,我们会在24小时内与您取得联系。