首頁  >  文章  >  web前端  >  在Javascript中自適應處理方法

在Javascript中自適應處理方法

亚连
亚连原創
2018-06-15 14:11:412947瀏覽

這篇文章主要為大家介紹了關於利用Javascript防止圖片拉伸的自適應處理方法,文中透過範例程式碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面一起學習學習吧。

前言

相信大家在日常的web開發中,作為前端經常會遇到處理圖片拉伸問題的情況。

例如banner、圖文清單、頭像等所有和使用者或客戶自主操作圖片上傳的地方,而一旦牽扯圖片,就會涉及到圖片拉伸的問題,當然,在圖片上傳時做手動裁剪,讓使用者或客戶清晰的感知到圖片的有效內容才是最優的解決方案,但是在其他各種外在因素下,沒有做裁切的話,就需要在前端顯示上做處理了,滿足在上傳任意大小圖片的情況下,最優顯示效果的需求。

這時我們需要考慮到極端效果,如下圖:

而我們想要得到的效果是這樣的------

把圖片放進框框,要幾個步驟?三步驟...我們開始

第一步:先畫個框框(這裡順便安麗一種自適應框框的方法)

// 假定需要一个在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>
 <p id="list">
  <p class="img-box">
   <img src="..."/>
  </p>
 </p>
</body>

第二步:設定圖片需要使用到的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新增類別名稱

//需要注意的是,不能在css中直接给img设置宽度和高度
//否则在img.onload后获取的宽高是css设置的宽高
//同时建议使用dom对象来获取img标签
<script>
 var list = document.getElementById(&#39;list&#39;);
 getImgWH ( list );
 //执行宽高比对并设置img类名
 function getImgWH ( Obj ) {
  var img = Obj.getElementsByTagName(&#39;img&#39;);
  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(&#39;height&#39;);
    } else if ( width < height ) {
     this.classList.add(&#39;width&#39;);
    } else {
     this.style.width = &#39;100%&#39;;
     this.style.height = &#39;100%&#39;;
    }
   }
  }
 }
</script>

上面是我整理給大家的,希望未來會對大家有幫助。

相關文章:

在webpack中有關vue專案資源檔案報404問題(詳細教學)

在vue.js中整合vux如何實作上拉載入下拉刷新

使用Gulp如何實作靜態網頁模組化具體怎麼做?

使用js實作微信喚起支付寶領紅包(詳細教學)

利用jqprint如何實作列印頁面內容

以上是在Javascript中自適應處理方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn