前言
相信大家在日常的web開(kāi)發(fā)中,作為前端經(jīng)常會(huì)遇到處理圖片拉伸問(wèn)題的情況。
例如banner、圖文列表、頭像等所有和用戶(hù)或客戶(hù)自主操作圖片上傳的地方,而一旦牽扯圖片,就會(huì)涉及到圖片拉伸的問(wèn)題,當(dāng)然,在圖片上傳時(shí)做手動(dòng)裁切,讓用戶(hù)或客戶(hù)清晰的感知到圖片的有效內(nèi)容才是最優(yōu)的解決方案,但是在其他各種外在因素下,沒(méi)有做裁切的話(huà),就需要在前端顯示上做處理了,滿(mǎn)足在上傳任意大小圖片的情況下,最優(yōu)顯示效果的需求。
這時(shí)我們需要考慮到極端效果,如下圖:
而我們想要得到的效果是這樣的------
把圖片放進(jìn)框框,要幾步?三步...我們開(kāi)始
第一步:先畫(huà)個(gè)框框 (這里順便安利一種自適應(yīng)框框的方法)
// 假定需要一個(gè)在750px屏幕下寬400px,高280px的盒子 // 寬度 = 400 / 750 = 0.5333 // 高度 = 280 / 400 * 0.5333 = 0.3733 <style> .img-box{ position: relative; width: 53.33%; height: 0; padding-bottom: 37.33%; overflow: hidden; background-color: #eee; } </style> <body> <div id="list"> <div class="img-box"> <img src="..."/> </div> </div> </body>
第二步:設(shè)置圖片需要使用到的css
<style> .width{ position: absolute !important; width: 100% !important; min-height: 100% !important; top: 50% !important; transform: translateY(-50%) !important; -ms-transform: translateY(-50%) !important; -moz-transform: translateY(-50%) !important; -webkit-transform: translateY(-50%) !important; -o-transform: translateY(-50%) !important; display: block; } .height{ position: absolute !important; height: 100% !important; min-width: 100% !important; left: 50% !important; transform: translateX(-50%) !important; -ms-transform: translateX(-50%) !important; -moz-transform: translateX(-50%) !important; -webkit-transform: translateX(-50%) !important; -o-transform: translateX(-50%) !important; display: block; } </style>
第三步:js獲取圖片高度比較并給img添加類(lèi)名
//需要注意的是,不能在css中直接給img設(shè)置寬度和高度 //否則在img.onload后獲取的寬高是css設(shè)置的寬高 //同時(shí)建議使用dom對(duì)象來(lái)獲取img標(biāo)簽 <script> var list = document.getElementById('list'); getImgWH ( list ); //執(zhí)行寬高比對(duì)并設(shè)置img類(lèi)名 function getImgWH ( Obj ) { var img = Obj.getElementsByTagName('img'); for( var i=0 ; i<img.length ; i++ ){ img[i].onload = function(){ var width = this.width; var height = this.height; if ( width > height ) { this.classList.add('height'); } else if ( width < height ) { this.classList.add('width'); } else { this.style.width = '100%'; this.style.height = '100%'; } } } } </script>
圖片防止拉伸處理比較簡(jiǎn)單,但是在實(shí)際項(xiàng)目中需要得到足夠的重視,一個(gè)web頁(yè)面成也圖片,敗也圖片,拉伸了圖片就等著設(shè)計(jì)師的磨嘰吧,哈哈哈哈...
總結(jié)
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com