我從現象中學到的CSS

来源:http://www.cnblogs.com/pssp/archive/2017/04/17/6711419.html
-Advertisement-
Play Games

文字溢出隱藏 如果你觀察過浮動元素,你會發現這樣一個事實,當前一個元素將寬度占滿以後,後一個元素就會往下掉,如下所示 代碼如下 也許在你眼裡這是個再正常不過的現象,不過有人卻將這個現象用在了實現文本溢出隱藏上,我們來看看他們是怎麼實現的。 先來看看它的效果,如下 實現這個效果的原理就是先將省略號通過 ...


文字溢出隱藏

如果你觀察過浮動元素,你會發現這樣一個事實,當前一個元素將寬度占滿以後,後一個元素就會往下掉,如下所示

代碼如下

<style>
  div,p{
    margin:0;
  }
  #box{
    width: 100px;
    height: 20px;
    border: 1px solid red;
  }
  #box .content{
    float:left;
    height: 100%;
    margin-right: 20px;
  }
</style>
<div id="box">
    <p class="content">CSS</p>
    <p>樂趣</p>
  </div>

也許在你眼裡這是個再正常不過的現象,不過有人卻將這個現象用在了實現文本溢出隱藏上,我們來看看他們是怎麼實現的。

    <style>
      div,p{
        margin:0;
      }
      #box{
        width: 100px;
        height: 20px;
        border: 1px solid red;
      }
      #box p:first-child{
        float:left;
        height: 100%;
        padding-right: 1em;
        word-break:break-all;
        overflow:hidden;
      }
      #box p:last-child{
        position:relative;
        top:-20px;
        text-align:right;
      }
    </style>
<div id="box">
    <p>CSS</p>
    <p>...</p>
  </div>

先來看看它的效果,如下

實現這個效果的原理就是先將省略號通過相對定位移動到box的上方,當第一個元素p的內容超過box元素的寬度時,第二個p元素就會掉下來(一行的高度),如果只想讓...在第一個p元素內容超出時才顯示,我們可以給box元素加上overflow:hidden;即可。

也不一定得用浮動,兩個塊元素也是沒有問題滴,前一個內容越多後一個元素就越往後,不多說上例子。

    <style>
      div,p{
        margin:0;
      }
      #box{
        width: 100px;
        height: 20px;
        border: 1px solid red;
      }
      #box p:first-child{
        max-height: 40px;
        padding-right: 1em;
        word-break: break-all;
        overflow: hidden;
      }
      #box p:last-child{
        position: relative;
        top: -44px;
        text-align: right;
      }
    </style>
<div id="box">
    <p>CSS</p>
    <p>...</p>
  </div>

這裡比之前寫的代碼多了一行max-height: 40px;之所以這樣做是因為我們希望第一個p元素的內容超出才顯示第二個元素,而第二個元素是在當第一個元素的寬超出box才會被顯示,而只有當第一個p元素2行的時候才算超出,另外這裡不用height也是有原因的,如果設置的是height,那麼高度就被固定了,如果高度都固定了,顯然就不可能去影響第二個p元素。

一行居中,多行居左

需要做到1行居中,多行居左,其實也很簡單,我們知道每個元素都可以獨自設置自己的文本對齊方式,假如我們將HTML結構寫成下麵這樣

<div id="box">
    <p>CSS樂趣</p>
  </div>

我們知道父元素是可以控制子元素的對齊方式的,我們先將box的text-align設置成center,再將p元素的text-align設置成left,經管如此設置,結果還是不行的。

<style>
      div,p{
        margin:0;
      }
      #box{
        width:100px;
        border:1px solid red;
        text-align:center;
      }
      #box p{
        text-align:left;
      }
    </style>

結果如下

可以看到p元素,顯示的是左對齊,並沒有被居中,其原因在於p元素的寬是占滿box元素的,這也是塊元素的一個特點,假如我們將p元素的display改成inline或者inline-block,p元素就居中了,如下

我們將內容加到兩行看看

很顯然這不是我們所希望看到的,之所以p元素設置的text-align:left;沒有起作用,是因為此時p元素是行內元素,它的寬度是隨著內容自適應的,所以永遠都不可能多出空間來,既然沒有多出的空間,自然就不可能有對齊方式,因為內容就占滿了整個空間,雖然行內元素做不到,但是行內塊則是可以的,如下

行內塊元素的寬雖然是根據內容來的,但和行內元素不同的是,行內塊元素的的每一行行寬都已經確定了的(最寬的行寬),所以行內塊在內容沒有占滿的情況下,是可以設置文字的對齊方式的。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Bulma 是一個基於 Flexbox 的現代化的 CSS 框架,設計的初衷就是移動優先(Mobile First),模塊化設計,可以輕鬆用來實現各種簡單或者複製的內容佈局,瀏覽器支持:Chrome、Edge、Firefox、Internet Explorer (10+)、Opera 以及 Safa... ...
  • 任務一:零基礎HTML編碼 課程概述 作業提交截止時間:04-24 重要說明 百度前端技術學院的課程任務是由百度前端工程師專為對前端不同掌握程度的同學設計。我們儘力保證課程內容的質量以及學習難度的合理性,但即使如此,真正決定課程效果的,還是你的每一次思考和實踐。 課程多數題目的解決方案都不是唯一的, ...
  • 用 js 的 selection range 方法操作選擇區域內容和圖片,實現選擇、刪除等操作。 ...
  • 1.前臺javascript 1.在提交的js中這樣寫 document.form1.username.value=encode64(document.form1.username.value); document.form1.password.value=encode64(document.for... ...
  • 引子:用javascript給元素綁定事件,我們可以用addEventListener這個方法,然而這個方法有相容問題,比如在IE瀏覽器上面就無效,在IE上面要用attachEvent這個方法 一、addEventListener和attachEvent的區別: 1、addEventListener ...
  • git:https://github.com/reg21st/vue2 management platform 訪問:https://reg21st.github.io/vue2 management platform 概述: 最近學習vue2.0和elementUI的使用,在各種文檔的幫助下,嘗試 ...
  • 語句 (建議)每條語句放在不同的行上並加上分號 first cnblogs;second cnblogs; 註釋 (建議)用"//" 來註釋單行,用"/*"註釋多行 //有註釋是好事 /*有註釋是好事 有註釋是好事 有註釋是好事 有註釋是好事*/ 變數 JS語法不允許變數名中包含空格或標點符號(美元 ...
  • 本文也同步發表在我的公眾號“我的天空” 上一期我們已經介紹了閉包,由於閉包可以延長函數內部的變數的生存周期,因此我們可以將不需要暴露在全局的變數封裝成函數的內部變數,從而避免代碼污染。 譬如要實現一個簡單的累加器,為了保存每次累加的結果,因此聲明瞭一個全局變數total,代碼如下: var tota ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...