字體屬性設置之一:谷歌瀏覽器12px以下字體的顯示;方法和原理

来源:http://www.cnblogs.com/hanhanhan/archive/2016/07/29/5719275.html
-Advertisement-
Play Games

前言: chrome 谷歌瀏覽器預設的字體大小為16px;可以通過設置font-size來設置字體大小但是當設置到12px以下的時候字體大小不再改變;對於想設置其他大小的字體就很頭疼,本文參考網上的方法,並對該方法以及原理介紹;並對該方法的弊端進行闡述並提出一種合適的解決辦法 1.適用對象: blo ...


前言:

chrome

谷歌瀏覽器預設的字體大小為16px;可以通過設置font-size來設置字體大小但是當設置到12px以下的時候字體大小不再改變;對於想設置其他大小的字體就很頭疼,本文參考網上的方法,並對該方法以及原理介紹;並對該方法的弊端進行闡述並提出一種合適的解決辦法   1.適用對象:   block 或者inline-block類型;   2.方法(該方法先以p標簽舉例):   方法:通過設置transform:scale(); 局限性:標簽會發生移動(可以參考下麵的代碼和圖片); 解決辦法:設置transform-origin;
   <!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style media="screen">
    *{
      margin: 0;
      padding: 0;
    }
    </style>
  </head>
  <body>
    <p>
      我是p
    </p>
  </body>
</html>

 

可以發現預設的是16px

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style media="screen">
    *{
      margin: 0;
      padding: 0;
    }
      p{
        -webkit-transform:scale(0.8);
      }
    </style>
  </head>
  <body>
    <p>
      我是p
    </p>
  </body>
</html>

可以發現當設置0.8的縮放比例的時候;得到的字體大小:16pxX 0.8 = 12.8px

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style media="screen">
    *{
      margin: 0;
      padding: 0;
    }
      p{
        font-size: 10px;
        -webkit-transform:scale(0.8);
      }
    </style>
  </head>
  <body>
    <p>
      我是p
    </p>
  </body>
</html>

當在p中設置font-size:10px的時候比例縮放就以10px進行縮放; (可以看到設置縮放之後標簽發生移動,這個在下麵會說到解決辦法) p中所有的元素都按照p的縮放比例進行縮放; 3.原理:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style media="screen">
      *{
        margin: 0;
        padding: 0;
      }
      p{
        width: 300px;
        height: 300px;
        -webkit-transform:scale(0.8);
        border: 1px solid red;
      }

      .a{
        width: 300px;
        height: 300px;
        border: 1px solid red;
        margin-top: 10px;
        margin-left: 10px;
      }
    </style>
  </head>
  <body>
    <div class="a">
      <p>
        我是p
      </p>
    </div>
  </body>
</html>

當對p加父容器和對p本身設置寬高以及邊框;設置scale0.8,p標簽自動上下居中(自身原來的寬高-縮放後的寬高得到的寬高平均分配到上下左右);

用chrome自帶的盒模型發現,p標簽內容占據寬度依舊是300px X 300px

當在p後面(div中)加入span元素髮現span出了div的範圍,說明等比縮放只是改變的原來標簽形式上的大小;其原來所在文檔流占據的空間位置並未因縮放而騰出來;

發現改變p的位置之後span仍然被擠出來。

該方法原理及總結: 1.設置scale時時對整個p標簽進行縮放(包含p本身及其內容的所有元素),而不單單是對字體的縮放; 2.進行縮放之後會將縮放之前的寬高-縮放之後的寬高的值自動分配到p標簽的上下左右;但縮放並不會改變該標簽原來在文檔流中所占據的位置大小;不會因為縮放而騰出空間; 3.縮放後,縮放對象的位置會發生變化; 4.也是scale不適用於inline類型元素的原因(不能設置寬高;雖然自己的寬高靠內容撐起來;但是在設置css的時候無法獲取寬高的準確信息(我是這麼理解));所以如果想要設置inline類型的font-size需要先設置display:block或者inline-block。 4.解決辦法(解決偏移問題):
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style media="screen">
      *{
        margin: 0;
        padding: 0;
      }
      p{
        width: 300px;
        height: 300px;
        -webkit-transform:scale(0.8);
        -webkit-transform-origin: 0 0;
        border: 1px solid red;
      }

      .a{
        width: 300px;
        height: 300px;
        border: 1px solid red;
        margin-top: 10px;
        margin-left: 10px;
      }
    </style>
  </head>
  <body>
    <div class="a">
      <p>
        我是p
      </p>
    </div>
  </body>
</html>

在縮放對象上加入:  -webkit-transform-origin: 0 0; 或者   -webkit-transform-origin-x: 0;  -webkit-transform-origin-y: 0;    
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、概述 Redis3.0版本之後支持Cluster. 1.1、redis cluster的現狀 目前redis支持的cluster特性: 1):節點自動發現 2):slave->master 選舉,集群容錯 3):Hot resharding:線上分片 4):進群管理:cluster xxx 5) ...
  • 畢業到轉行以來有一年時間了,成為一名程式猿也有大半年了,之前在新浪上隨便寫寫簡單的學習過程,感覺不夠像那麼回事,現在接觸前端也有一段時間了,也做過幾個項目,認識到可以拓展的實在太多了,希望從這裡起步,踏踏實實,記錄好點點滴滴。 HHL Gulp使用步驟: 1 安裝node(npm),全局安裝,我使用 ...
  • 昨天公司說官網的登陸註冊每次要跳轉到另一個界面,能不能做一個簡單的,在界面彈出一個框框登陸,我想了想做了這麼一個案例,大家來看看成不成 貼上代碼,實現了在同一個彈出窗上載入了登陸註冊功能!可自由點擊!當然樣式醜了一些!還請見諒!demo在下麵 1這裡是html內容 2接下來是樣式css 後面更上js ...
  • 收拾心情,學習學習js!總結下自己的學習所得! 現有的有三種方法可以獲取元素的節點,分別是通過元素ID,通過標簽名和類名來獲取的 1.GetElmentById:將返回一個與那個有給定ID屬性的值的元素節點對應的對象,方法只有一個參數,元素的id屬性的值必須放在單引號或雙引號里 2.GetElmen ...
  • 一、H5有哪些新特性,移除了哪些元素?如何處理h5新標簽的瀏覽器相容性問題,如何區分html和html5 1. html5不在是SGL(通用標記語言)的一個子集,而包含了:圖像、位置、存儲、多任務等功能 2. 新增的圖像為canvas類,媒體回放video和audio元素;本地離線存儲localSt ...
  • 眾所周知,在jQuery語法中,$符號是jQuery的簡寫方式。但在某些情況下,可能需要在同一個頁面引入其他javascript庫(比如Prototype)。因為$簡短方便,很多的庫也是使用$符號。為了避免名稱衝突,jQuery提供了noConflict()方法來解決這個問題。調用該方法可以把對$標 ...
  • 1.字元串的不可變性 字元串定義了後,會一直占據記憶體空間,企鵝該處記憶體空間(棧)不可被重新賦值。 2.短路運算 ||、&& 二元運算符,返回參與運算的操作數的原值(原數據類型和原數據), 運算結束後,返回導致運算結束的那個操作數。 3.三元運算符 code1?code2:code3; 與if-els ...
  • 1. 基礎實例 說明: (1).react.js:React 的核心庫。 (2).react-dom.js:提供與 DOM 相關的功能。 (3).Browser.js:將 JSX 語法轉為 JavaScript 語法。這一步很消耗時間,實際上線的時候,應該將它放到伺服器完成,操作如下: $ babe ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...