Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 2021精品国产综合久久,国产免费久久精品丫丫,亚洲综合色站

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          瀏覽器兼容問(wèn)題解決方法大全

          瀏覽器兼容問(wèn)題解決方法大全

          當(dāng)今多樣化的瀏覽器環(huán)境中,網(wǎng)頁(yè)在不同瀏覽器中都能正常顯示和運(yùn)行是前端開(kāi)發(fā)者的一大挑戰(zhàn)。瀏覽器兼容性問(wèn)題不僅影響用戶體驗(yàn),還可能導(dǎo)致功能無(wú)法正常使用。下面為大家分享幾種有效解決瀏覽器兼容問(wèn)題的方法。

          1. 使用標(biāo)準(zhǔn)化的HTML和CSS

          確保代碼符合最新的HTML和CSS標(biāo)準(zhǔn)是解決兼容性問(wèn)題的基礎(chǔ)。使用W3C驗(yàn)證工具檢查和修復(fù)代碼中的錯(cuò)誤,可以減少因不標(biāo)準(zhǔn)的代碼導(dǎo)致的兼容性問(wèn)題。

          2. 使用CSS重置或歸一化

          不同瀏覽器對(duì)默認(rèn)樣式的處理存在差異,使用CSS重置(Reset CSS)或歸一化(Normalize.css)可以消除這些差異,提供一致的起點(diǎn)。Normalize.css相較于Reset CSS,更加溫和地處理默認(rèn)樣式,推薦使用。

          3. JavaScript庫(kù)和框架

          使用現(xiàn)代JavaScript庫(kù)和框架如jQuery、React、Vue等,可以簡(jiǎn)化跨瀏覽器的DOM操作和事件處理。這些庫(kù)和框架通常已經(jīng)解決了大部分兼容性問(wèn)題。

          4. 前綴處理

          某些CSS3特性在不同瀏覽器中的支持情況不同,需要添加瀏覽器前綴。使用Autoprefixer等工具可以自動(dòng)為CSS代碼添加必要的前綴,確保在各個(gè)瀏覽器中的兼容性。

          5. 響應(yīng)式設(shè)計(jì)

          使用媒體查詢和響應(yīng)式設(shè)計(jì)技術(shù),確保網(wǎng)頁(yè)在不同設(shè)備和瀏覽器窗口大小下都能正常顯示。Bootstrap、Foundation等前端框架提供了豐富的響應(yīng)式設(shè)計(jì)組件,幫助快速實(shí)現(xiàn)兼容性。

          6. 條件注釋

          針對(duì)IE瀏覽器的特定版本,可以使用條件注釋來(lái)加載特定的CSS或JavaScript代碼,修復(fù)在這些瀏覽器中的兼容性問(wèn)題。雖然這種方法現(xiàn)在較少使用,但在處理老舊版本的IE時(shí)仍然有效。

          7. Polyfill和Shim

          Polyfill和Shim是用于在較舊的瀏覽器中實(shí)現(xiàn)現(xiàn)代API和功能的代碼片段。Modernizr可以檢測(cè)瀏覽器對(duì)HTML5和CSS3特性的支持情況,并根據(jù)檢測(cè)結(jié)果加載相應(yīng)的Polyfill。

          8. 瀏覽器開(kāi)發(fā)者工具

          利用瀏覽器自帶的開(kāi)發(fā)者工具(如Chrome DevTools、Firefox Developer Tools等),可以快速調(diào)試和修復(fù)兼容性問(wèn)題。這些工具提供了豐富的調(diào)試功能,包括元素檢查、網(wǎng)絡(luò)請(qǐng)求分析、JavaScript調(diào)試等。

          解決瀏覽器兼容問(wèn)題需要綜合運(yùn)用多種方法,使用這些工具和技術(shù),可以有效提升網(wǎng)頁(yè)在不同瀏覽器中的兼容性。711Proxy提供純凈住宅代理,支持多種業(yè)務(wù)需求。

          所周知,一些新的css屬性都會(huì)有一些瀏覽器的兼容問(wèn)題,因此不同的瀏覽器都會(huì)給對(duì)應(yīng)的css屬性添加瀏覽器前綴。

          此時(shí)我們需要引入postcss-loader和postcss-preset-env來(lái)處理這個(gè)情況。

          npm i postcss-loader postcss-preset-env -D

          webpack.config.js的配置如下:

          const { resolve }=require('path');
          const HtmlWebpackPlugin=require('html-webpack-plugin');
          const miniCssExtractPlugin=require('mini-css-extract-plugin');
          module.exports={
              entry: './src/main.js',
              output: {
                  filename: 'bundle.js',
                  path: resolve(__dirname, 'dist')
              },
              module: {
                  rules: [
                      {
                          test: /\.css$/,
                          use: [miniCssExtractPlugin.loader, 'css-loader', 'postcss-loader']
                      },
                      {
                          test: /\.less$/,
                          use: [miniCssExtractPlugin.loader, 'css-loader', 'postcss-loader', 'less-loader']
                      },
                      {
                          test: /\.scss$/,
                          use: [miniCssExtractPlugin.loader, 'css-loader', 'postcss-loader', 'sass-loader']
                      }
                  ]
              },
              plugins: [
                  new HtmlWebpackPlugin({
                      template: './src/assets/index.html',
                      hash: true,
                      filename: 'index.html',
                      favicon: './src/assets/favicon.ico'
                  }),
                  new miniCssExtractPlugin({
                      filename: 'index.css'
                  })
              ],
              mode: 'development'
          }

          使用postcss-preset-env需要新建一個(gè)配置文件postcss.config.js。

          postcss.config.js的配置如下:

          module.exports={
              plugins: [
                  require('postcss-preset-env')()
              ]
          }

          使用postcss-loader的時(shí)候就會(huì)默認(rèn)調(diào)用postcss.config.js,postcss.config.js里引入了postcss-preset-env。此時(shí)postcss-preset-env并不知道怎么處理瀏覽器兼容,因此,我們需要在package.json中配置browserslist來(lái)告訴postcss-preset-env如何處理兼容。

          package.json的配置如下:

          {
            "name": "wpk5-demo",
            "version": "1.0.0",
            "description": "",
            "main": "index.js",
            "scripts": {
              "build": "npx webpack"
            },
            "keywords": [],
            "author": "",
            "license": "ISC",
            "devDependencies": {
              "css-loader": "^5.2.0",
              "html-webpack-plugin": "^5.3.1",
              "less": "^4.1.1",
              "less-loader": "^8.0.0",
              "mini-css-extract-plugin": "^1.4.0",
              "node-sass": "^5.0.0",
              "postcss-loader": "^5.2.0",
              "postcss-preset-env": "^6.7.0",
              "sass-loader": "^11.0.1",
              "style-loader": "^2.0.0",
              "webpack": "^5.28.0",
              "webpack-cli": "^4.5.0"
            },
            "browserslist": [
              "> 1%",
              "last 2 versions",
              "not ie <=8"
            ]
          }

          git倉(cāng)庫(kù)地址:

          https://gitee.com/seimin/xiaoming2qianduan-webpack5/tree/v5.4/

          文基于掘金作者kkkkkkkkeep的文章,略作補(bǔ)充修改,文末有版權(quán)申明

          方案一:amfe-flexible+px2rem-loader

          amfe-flexible:根據(jù)設(shè)備寬度,修改根元素html的大小,以適配不同終端
          px2rem-loader:將css中的px轉(zhuǎn)為rem單位,用了它就不用自己計(jì)算rem值了

          注意:amfe-flexible是lib-flexible的優(yōu)化,主要區(qū)別是amfe-flexible不會(huì)改變視口大小

          安裝 + 配置

          1. 安裝amfe-flexible和px2rem-loader

          復(fù)制代碼npm  install -s amfe-flexible
          npm i px2rem-loader --save -dev
          

          2. 配置amfe-flexible

          復(fù)制代碼// 入口文件main.js中引入
          import 'amfe-flexible/index.js'
          
          復(fù)制代碼// 在index.html中修改meta
          <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
          

          amfe-flexible干了什么呢?

          • 給元素動(dòng)態(tài)改寫font-size的值
          • 設(shè)置1rem=viewWidth / 10
          • 設(shè)置頁(yè)面刷新時(shí)重置rem
          • 支持0.5px

          3. 配置px2rem-loader

          復(fù)制代碼// build/utils.js
            const px2remLoader={
              loader: 'px2rem-loader',
              options: {
                remUnit: 75 //默認(rèn)換算為1rem為75px,可根據(jù)你的原型圖修改
              }
            }
          // 在generateLoaders方法中添加px2remLoader
            function generateLoaders (loader, loaderOptions) {
              const loaders=options.usePostCSS ? [cssLoader, postcssLoader, px2remLoader] : [cssLoader, px2remLoader]
              if (loader) {
                loaders.push({
                  loader: loader + '-loader',
                  options: Object.assign({}, loaderOptions, {
                    sourceMap: options.sourceMap
                  })
                })
              }
              // Extract CSS when that option is specified
              // (which is the case during production build)
              if (options.extract) {
                return ExtractTextPlugin.extract({
                  use: loaders,
                  fallback: 'vue-style-loader'
                })
              } else {
                return ['vue-style-loader'].concat(loaders)
              }
            }
          

          4. 展示效果

          • iPhoneX(屏幕寬度為375px)

          • iPhone6/7/8 plus(屏幕寬度為375px)

          • iPad(屏幕寬度為768px)

          方案二:vw實(shí)現(xiàn)移動(dòng)端適配

          插件介紹

          1. postcss-aspect-ratio-mini

          主要用來(lái)處理元素容器寬高比。

          如果我們想要做一個(gè)188:246(188是容器寬度,246是容器高度)這樣的比例容器,只需要這樣使用:

          復(fù)制代碼[w-188-246] {
            aspect-ratio: '188:246';
          }
          

          有一點(diǎn)需要特別注意:aspect-ratio屬性不能和其他屬性寫在一起,否則編譯出來(lái)的屬性只會(huì)留下aspect-ratio的值。主要是因?yàn)樵诓寮凶隽讼鄳?yīng)的處理,不在每次調(diào)用aspect-ratio時(shí),生成前面指定的默認(rèn)樣式代碼,這樣代碼沒(méi)那么冗余。所以在使用的時(shí)候,需要分開(kāi)來(lái)寫:

          復(fù)制代碼// 編譯前
          [w-188-246] {
            width: 188px;
            background-color: red;
          }
          [w-188-246] {
            aspect-ratio: '188:246';
          }
          
          復(fù)制代碼// 編譯后
          [w-188-246] {
            width: 25.067vw;
            background-color: red;
          }
          [w-188-246]:before {
            padding-top: 130.85106382978725%;
          }
          

          2. postcss-px-to-viewport

          postcss-px-to-viewport主要用來(lái)把px單位轉(zhuǎn)換為vw、vh、vmin或者vmax這樣的視窗單位。

          目前出視覺(jué)設(shè)計(jì)稿,我們都是使用750px寬度的,那么100vw=750px,即1vw=7.5px。在不想要把px轉(zhuǎn)換為vw的時(shí)候,首先在對(duì)應(yīng)的元素(html)中添加配置中指定的類名.ignore或.hairlines(.hairlines一般用于設(shè)置border-width:0.5px的元素中)

          復(fù)制代碼// 編譯前
          .test {
            border: .5px solid black;
            border-bottom-width: 4px;
            font-size: 14px;
            line-height: 20px;
            position: relative;
          }
          [w-188-246] {
            width: 188px;
          }
          
          復(fù)制代碼// 編譯后
          .test {
            border: .5px solid #000;
            border-bottom-width: .533vw;
            font-size: 1.867vw;
            line-height: 2.667vw;
            position: relative;
          }
          [w-188-246] {
            width: 25.067vw;
          }
          

          3. postcss-write-svg

          postcss-write-svg插件主要使用的是border-image和background來(lái)做1px的相關(guān)處理。

          • border-image方式:
          復(fù)制代碼// 編譯前
          @svg 1px-border {
            height: 2px;
            @rect {
              fill: var(--color, black);
              width: 100%;
              height: 50%;
            }
          }
          .example {
            border: 1px solid transparent;
            border-image: svg(1px-border param(--color #00b1ff)) 2 2 stretch;
          }
          
          復(fù)制代碼// 編譯后
          .example {
            border: 1px solid transparent;
            border-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='2px'%3E%3Crect fill='%2300b1ff' width='100%25' height='50%25'/%3E%3C/svg%3E") 2 2 stretch;
          }
          
          • background-image方式:
          復(fù)制代碼// 編譯前
          @svg square {
            @rect {
              fill: var(--color, black);
              width: 100%;
              height: 100%;
            }
          }
          
          #example {
            background: white svg(square param(--color #00b1ff));
          }
          
          復(fù)制代碼// 編譯后
          #example {
            background: white url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%2300b1ff' width='100%25' height='100%25'/%3E%3C/svg%3E");
          }
          

          4. postcss-cssnext

          主要用來(lái)讓我們使用CSS未來(lái)的特性,其會(huì)對(duì)這些特性做相關(guān)的兼容性處理。

          5. cssnano

          cssnano主要用來(lái)壓縮和清理CSS代碼。在Webpack中,cssnano和css-loader捆綁在一起,所以不需要自己加載它。不過(guò)你也可以使用postcss-loader顯式的使用cssnano。

          cssnano集成了一些其他的PostCSS插件,如果你想禁用cssnano中的某個(gè)插件的時(shí)候,可以像下面這樣操作:

          復(fù)制代碼"cssnano": {
            autoprefixer: false,
            "postcss-zindex": false
          }
          

          6. postcss-viewport-units

          postcss-viewport-units插件主要是給CSS的屬性添加content的屬性,配合viewport-units-buggyfill庫(kù)給vw、vh、vmin和vmax做適配的操作。

          安裝 + 配置

          1. 安裝PostCSS插件

          默認(rèn)PostCSS插件(通過(guò)Vue-cli構(gòu)建的項(xiàng)目默認(rèn)安裝了):

          • postcss-import:主要用來(lái)處理@import引入路徑問(wèn)題。
          • postcss-url:主要用來(lái)處理文件,比如圖片文件、字體文件等引用路徑的處理。
          • autoprefixer:主要用來(lái)處理瀏覽器前綴問(wèn)題。
          復(fù)制代碼npm i postcss-import --S
          npm i postcss-url --S   
          npm i autoprefixer --S
          

          其他PostCSS插件:

          • postcss-aspect-ratio-mini:主要用來(lái)處理元素容器寬高比。
          • postcss-px-to-viewport:主要用來(lái)把px單位轉(zhuǎn)換為vw、vh、vmin或者vmax這樣的視窗單位。
          • postcss-write-svg:主要使用的是border-image和background來(lái)做1px的相關(guān)處理。
          • postcss-cssnext:主要用來(lái)讓我們使用CSS未來(lái)的特性,其會(huì)對(duì)這些特性做相關(guān)的兼容性處理。
          • cssnano:主要用來(lái)壓縮和清理CSS代碼。
          • postcss-viewport-units:主要用來(lái)給CSS的屬性添加content的屬性,配合viewport-units-buggyfill庫(kù)給vw、vh、vmin和vmax做適配的操作。
          復(fù)制代碼npm i postcss-aspect-ratio-mini --S
          npm i postcss-px-to-viewport --S   
          npm i postcss-write-svg --S   
          npm i postcss-cssnext --S   
          npm i postcss-viewport-units --S   
          npm i cssnano --S
          

          2. 配置PostCSS插件

          復(fù)制代碼// 根目錄下的.postcssrc.js
          module.exports={
            "plugins": {
              "postcss-import": {},
              "postcss-url": {},
              "postcss-aspect-ratio-mini": {}, 
              "postcss-write-svg": {
                utf8: false
              },
              "postcss-cssnext": {},
              "postcss-px-to-viewport": {
                viewportWidth: 750,      // 視窗的寬度,對(duì)應(yīng)的是我們?cè)O(shè)計(jì)稿的寬度,一般是750
                viewportHeight: 1334,    // 視窗的高度,根據(jù)750設(shè)備的寬度來(lái)指定,一般指定1334,也可以不配置
                unitPrecision: 3,        // 指定`px`轉(zhuǎn)換為視窗單位值的小數(shù)位數(shù)(很多時(shí)候無(wú)法整除)
                viewportUnit: 'vw',      // 指定需要轉(zhuǎn)換成的視窗單位,建議使用vw
                selectorBlackList: ['.ignore', '.hairlines'],  // 指定不轉(zhuǎn)換為視窗單位的類,可以自定義,可以無(wú)限添加,建議定義一至兩個(gè)通用的類名
                minPixelValue: 1,       // 小于或等于`1px`不轉(zhuǎn)換為視窗單位,你也可以設(shè)置為你想要的值
                mediaQuery: false       // 允許在媒體查詢中轉(zhuǎn)換`px`
              } 
              "postcss-viewport-units":{},
              "cssnano": {
                "cssnano-preset-advanced": {
                  zindex: false,
                  autoprefixer: false
                },
              }
            }
          }
          
          復(fù)制代碼// 在index.html中修改meta
          <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no" />
          

          什么情況下適合使用vw呢?

          • 容器適配,可以使用vw
          • 文本的適配,可以使用vw
          • 大于1px的邊框、圓角、陰影都可以使用vw
          • 內(nèi)距和外距,可以使用vw

          3. 展示效果

          • iPhoneX(屏幕寬度為375px)

          • iPhone6/7/8 plus(屏幕寬度為375px)

          • iPad(屏幕寬度為768px)

          方案三:rem + vw (結(jié)合方案一和方案二)

          方案四:postcss-mobile-forever

          https://github.com/wswmsword/postcss-mobile-forever

          一款 PostCSS 插件,用于將固定尺寸的移動(dòng)端視圖轉(zhuǎn)為具有最大寬度的可伸縮的移動(dòng)端視圖。該插件可以轉(zhuǎn)換視口單位(px->vw)、限制視圖最大寬度(min(vw, px))、生成適應(yīng)桌面端和橫屏的媒體查詢(@media)。

          如果您在使用 postcss-px-to-viewport(后簡(jiǎn)稱 px2vw) 實(shí)現(xiàn)伸縮界面的時(shí)候,不希望界面在大屏設(shè)備上撐滿整個(gè)屏幕而難以瀏覽,希望界面在達(dá)到某一個(gè)合適的寬度后停止伸縮(限制最大寬度),您可以使用本插件。

          您可以在線查看一個(gè)范例,通過(guò)旋轉(zhuǎn)屏幕、改變窗口大小、在不同屏幕查看展示效果。范例頂部的文字會(huì)提示您,當(dāng)前的視圖是移動(dòng)端豎屏(Portrait)、移動(dòng)端橫屏(Landscape)還是桌面端(Desktop)。


          參考文檔

          • 使用 Flexible 實(shí)現(xiàn)手淘 H5 頁(yè)面的終端適配 - 掘金
          • 如何在Vue項(xiàng)目中使用vw實(shí)現(xiàn)移動(dòng)端適配 - 掘金
          • vue移動(dòng)端h5適配解決方案(rem or vw) - 掘金

          作者:kkkkkkkkeep
          鏈接:https://juejin.cn/post/6844903917126434829
          來(lái)源:稀土掘金
          著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。


          主站蜘蛛池模板: 日韩精品福利视频一区二区三区| 国产一区二区在线| 人妻无码一区二区三区| 无码人妻精品一区二区三区99性| 日韩精品一区二区三区中文版 | 国产日韩AV免费无码一区二区| 精品视频一区二区三区四区| 日本一区二区在线播放| 亚洲国产精品一区二区成人片国内| 无码人妻精品一区二区蜜桃AV| 日韩AV无码一区二区三区不卡 | 亚洲av无码一区二区三区观看 | 无码人妻精品一区二区三区不卡 | 国产亚洲福利一区二区免费看| 中文字幕av人妻少妇一区二区| 久久久无码一区二区三区| 亚洲一区二区三区首页| 色狠狠一区二区三区香蕉蜜桃| www.亚洲一区| 久久精品无码一区二区app| 男人免费视频一区二区在线观看| 国产精品一区不卡| 国产成人高清视频一区二区| 中文字幕在线观看一区二区| 美女福利视频一区| 亚洲熟妇av一区二区三区下载| 国产精品久久一区二区三区| 无码一区二区三区中文字幕| 精品无码国产AV一区二区三区| 高清一区二区三区视频| 久久99国产一区二区三区| 国产午夜精品一区二区| 国产精华液一区二区区别大吗| 无码国产精品一区二区免费3p| 无码人妻视频一区二区三区| 日本国产一区二区三区在线观看 | 亚洲bt加勒比一区二区| 精品国产乱子伦一区二区三区| 日本韩国一区二区三区| 精品国产一区二区三区2021| 日韩电影一区二区|