首頁(yè) > 設計 > WEB開(kāi)發(fā) > 正文

使用transform :scale做頁(yè)面大小自適應時(shí),下拉框面板偏移的問(wèn)題

2019-11-02 19:00:21
字體:
來(lái)源:轉載
供稿:網(wǎng)友

前段時(shí)間在做項目時(shí),應客戶(hù)顯示設備的多樣性,需要適應多種設備。當時(shí)就考慮到了CSS3中的transform:scale屬性,邊學(xué)習邊使用。

開(kāi)始一切正常。核心代碼如下。

var clientWidth = document.documentElement.clientWidth; //計算出的瀏覽器可見(jiàn)寬度var clientHeight = document.documentElement.clientHeight; //計算出的瀏覽器可見(jiàn)高度var standardWidth = 1920; //瀏覽器標準,數值越大,顯示越小var scale = clientWidth / standardWidth;

function AutoSize() {    clientWidth = document.documentElement.clientWidth;    clientHeight = document.documentElement.clientHeight;    scale = clientWidth / standardWidth;    height = clientHeight / scale;    $("body").css({ "width": standardWidth, "-moz-transform": "scale(" + scale + ")", "-o-transform": "scale(" + scale + ")", "zoom": scale });    $("body").height(clientHeight / scale);           /*其他代碼*/}

但是后來(lái)發(fā)現當scale值不為1,并且使用select 標簽時(shí),下拉面板的位置是偏移的且不受scale屬性的影響:

所以源生的select不可用。因為當前項目中已經(jīng)使用了easy-ui,所以想先用easyui 的combobox試試,結果還是不行。

可見(jiàn)easyui 對于scale屬性也是沒(méi)有處理的,所以只好自己更改easyui的源代碼或者自己寫(xiě)個(gè)控件。

因時(shí)間有限,這兩種方法花費時(shí)間都較長(cháng),我選擇了最簡(jiǎn)單的屬性覆蓋方法。大家在時(shí)間足夠的情況下還是自己寫(xiě)個(gè)控件較為穩妥。。。

  <script type="text/javascript">         document.write("<style>.combo-p{left:" + (standardWidth * scale * 0.4 + 127) + "px !important;top:" + (scale*100) + "px !important;}</style>");    </script>這邊寫(xiě)了一個(gè)conbo-p的樣式,用來(lái)覆蓋easyui的原始樣式,具體值需要計算。然后一切正常:


發(fā)表評論 共有條評論
用戶(hù)名: 密碼:
驗證碼: 匿名發(fā)表