整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          css如何處理單行、多行文本溢出的省略

          css如何處理單行、多行文本溢出的省略

          圖:


          關鍵點:

          • 文本超出了隱藏
          overflow: hidden;
          • 超出部分使用...代替
          text-overflow: ellipsis;
          • 默認文本是自動換行的,如果是單行的話,要阻斷自動換行
          white-space: nowrap;

          實現單行文本超出省略:

                  .p1 {
                      /* 超出隱藏 */
                      overflow: hidden;
                      /* 設置文本不自動換行 (默認會自動換行)*/
                      white-space: nowrap;
                      /* 設置超出的部分如何顯示 */
                      text-overflow: ellipsis;
                  }

          實現多行文本超出省略:

          • 在WebKit瀏覽器或移動端(兼容性不太好)
            /*在WebKit瀏覽器或移動端*/       
          .p2 {
                      /* 超出隱藏 */
                      overflow: hidden;
                      display: -webkit-box;
                      -webkit-box-orient: vertical;
                      /* 設置行數 */
                      -webkit-line-clamp: 2;
                      /* 設置超出的部分如何顯示 */
                      text-overflow: ellipsis;
                  }
                  /* 兼容性比較好的 */
                  .p3 {
                      position: relative;
                      line-height: 40px;
                      height: 120px;
                      overflow: hidden;
                  }
                  .p3::after {
                      content: '...';
                      position: absolute;
                      bottom: 0;
                      right: 0;
                      background: #fff;
                  }
          • 使用偽元素處理(兼容性好)

          高度=行高*行數

                  .p3 {
                      position: relative;
                      line-height: 40px;
                    /*??????????*????????????????3
                      height: 120px;
                      overflow: hidden;
                  }
                  .p3::after {
                      content: '...';
                      position: absolute;
                      bottom: 0;
                      right: 0;
                      background: #fff;
                  }

          遇到這種問題,面試官的關注點更多是在于如何實現多行文本省略號處理,并且兼容性比較好。

          位 A 同學發了我一張截圖,問為何結果中出現了負數?

          問題截圖

          看了圖,我第一感覺就是數據溢出了。數據超出能表示的最大值,就會出現奇奇怪怪的結果。

          然后,他繼續發了張圖,內容是 print(100000*208378),就是直接打印上圖的 E[0]*G[0],結果是 20837800000,這是個正確的結果。

          所以新的問題是:如果說上圖的數據溢出了,為何直接相乘的數卻沒有溢出?

          由于我一直忽視數據的表示規則(整型的上限是多少?),而且對 Numpy 了解不多,還錯看了圖中結果,誤以為每一個數據都是錯誤的,所以就解答不出來。

          最后,經過學習群里的一番討論,我才終于明白是怎么回事,所以本文把相關知識點做個梳理。

          在正式開始之前,先總結一下上圖會引出的話題:

          • Python 3 中整數的上限是多少?Python 2 呢?
          • Numpy 中整數的上限是多少?出現整數溢出該怎么辦?

          關于第一個問題,先看看 Python 2,它有兩種整數:

          • 一種是短整數,也即常說的整數,用 int 表示,有個內置函數 int()。其大小有限,可通過sys.maxint() 查看(取決于平臺是 32 位還是 64 位)
          • 一種是長整數,即大小無限的整數,用 long 表示,有個內置函數 long()。寫法上是在數字后面加大寫字母 L 或小寫的 l,如 1000L

          當一個整數超出短整數范圍時,它會自動采用長整數表示。舉例,打印 2**100 ,結果會在末尾加字母 L 表示它是長整數。

          但是到了 Python 3,情況就不同了:它僅有一種內置的整數,表示為 int,形式上是 Python 2 的短整數,但實際上它能表示的范圍無限,行為上更像是長整數。無論多大的數,結尾都不需要字母 L 來作區分。

          也就是說,Python 3 整合了兩種整數表示法,用戶不再需要自行區分,全交給底層按需處理。

          理論上,Python 3 中的整數沒有上限(只要不超出內存空間)。這就解釋了前文中直接打印兩數相乘,為什么結果會正確了。

          PEP-237(Unifying Long Integers and Integers)中對這個轉變作了說明。它解釋這樣做的 目的:

          這會給新的 Python 程序員(無論他們是否是編程新手)減少一項上手前要學的功課。

          Python 在語言運用層屏蔽了很多瑣碎的活,比如內存分配,所以,我們在使用字符串、列表或字典等對象時,根本不用操心。整數類型的轉變,也是出于這樣的便利目的。(壞處是犧牲了一些效率,在此就不談了)

          回到前面的第二個話題:Numpy 中整數的上限是多少?

          由于它是 C 語言實現,在整數表示上,用的是 C 語言的規則,也就是會區分整數和長整數。

          有一種方式可查看:

          import numpy as np
          a=np.arange(2)
          type(a[0])
          # 結果:numpy.int32
          

          也就是說它默認的整數 int 是 32 位,表示范圍在 -2147483648 ~ 2147483647。

          對照前文的截圖,里面只有兩組數字相乘時沒有溢出:100007*4549、100012*13264,其它數據組都溢出了,所以出現奇怪的負數結果。

          Numpy 支持的數據類型要比 Python 的多,相互間的區分界限很多樣:

          numpy的數據類型

          截圖來源:https://www.runoob.com/numpy/numpy-dtype.html

          要解決整數溢出問題,可以通過指定 dtype 的方式:

          import numpy as np
          q=[100000]
          w=[500000]
          # 一個溢出的例子:
          a=np.array(q)
          b=np.array(w)
          print(a*b) # 產生溢出,結果是個奇怪的數值
          # 一個解決的例子:
          c=np.array(q, dtype='int64')
          d=np.array(w, dtype='int64')
          print(c*d) # 沒有溢出:[50000000000]
          

          好了,前面提出的問題就回答完了。來作個結尾吧:

          • Python 3 極大地簡化了整數的表示,效果可表述為:整數就只有一種整數(int),沒有其它類型的整數(long、int8、int64 之類的)
          • Numpy 中的整數類型對應于 C 語言的數據類型,每種“整數”有自己的區間,要解決數據溢出問題,需要指定更大的數據類型(dtype)

          位 A 同學發了我一張截圖,問為何結果中出現了負數?

          問題截圖

          看了圖,我第一感覺就是數據溢出了。數據超出能表示的最大值,就會出現奇奇怪怪的結果。

          然后,他繼續發了張圖,內容是 print(100000*208378),就是直接打印上圖的 E[0]*G[0],結果是 20837800000,這是個正確的結果。

          所以新的問題是:如果說上圖的數據溢出了,為何直接相乘的數卻沒有溢出?

          由于我一直忽視數據的表示規則(整型的上限是多少?),而且對 Numpy 了解不多,還錯看了圖中結果,誤以為每一個數據都是錯誤的,所以就解答不出來。

          最后,經過學習群里的一番討論,我才終于明白是怎么回事,所以本文把相關知識點做個梳理。

          在正式開始之前,先總結一下上圖會引出的話題:

          • Python 3 中整數的上限是多少?Python 2 呢?
          • Numpy 中整數的上限是多少?出現整數溢出該怎么辦?

          關于第一個問題,先看看 Python 2,它有兩種整數:

          • 一種是短整數,也即常說的整數,用 int 表示,有個內置函數 int()。其大小有限,可通過sys.maxint() 查看(取決于平臺是 32 位還是 64 位)
          • 一種是長整數,即大小無限的整數,用 long 表示,有個內置函數 long()。寫法上是在數字后面加大寫字母 L 或小寫的 l,如 1000L

          當一個整數超出短整數范圍時,它會自動采用長整數表示。舉例,打印 2**100 ,結果會在末尾加字母 L 表示它是長整數。

          但是到了 Python 3,情況就不同了:它僅有一種內置的整數,表示為 int,形式上是 Python 2 的短整數,但實際上它能表示的范圍無限,行為上更像是長整數。無論多大的數,結尾都不需要字母 L 來作區分。

          也就是說,Python 3 整合了兩種整數表示法,用戶不再需要自行區分,全交給底層按需處理。

          理論上,Python 3 中的整數沒有上限(只要不超出內存空間)。這就解釋了前文中直接打印兩數相乘,為什么結果會正確了。

          PEP-237(Unifying Long Integers and Integers)中對這個轉變作了說明。它解釋這樣做的 目的:

          這會給新的 Python 程序員(無論他們是否是編程新手)減少一項上手前要學的功課。

          Python 在語言運用層屏蔽了很多瑣碎的活,比如內存分配,所以,我們在使用字符串、列表或字典等對象時,根本不用操心。整數類型的轉變,也是出于這樣的便利目的。(壞處是犧牲了一些效率,在此就不談了)

          回到前面的第二個話題:Numpy 中整數的上限是多少?

          由于它是 C 語言實現,在整數表示上,用的是 C 語言的規則,也就是會區分整數和長整數。

          有一種方式可查看:

          import numpy as np
          a=np.arange(2)
          type(a[0])
          # 結果:numpy.int32
          

          也就是說它默認的整數 int 是 32 位,表示范圍在 -2147483648 ~ 2147483647。

          對照前文的截圖,里面只有兩組數字相乘時沒有溢出:100007*4549、100012*13264,其它數據組都溢出了,所以出現奇怪的負數結果。

          Numpy 支持的數據類型要比 Python 的多,相互間的區分界限很多樣:

          numpy的數據類型

          截圖來源:https://www.runoob.com/numpy/numpy-dtype.html

          要解決整數溢出問題,可以通過指定 dtype 的方式:

          import numpy as np
          q=[100000]
          w=[500000]
          # 一個溢出的例子:
          a=np.array(q)
          b=np.array(w)
          print(a*b) # 產生溢出,結果是個奇怪的數值
          # 一個解決的例子:
          c=np.array(q, dtype='int64')
          d=np.array(w, dtype='int64')
          print(c*d) # 沒有溢出:[50000000000]
          

          好了,前面提出的問題就回答完了。來作個結尾吧:

          • Python 3 極大地簡化了整數的表示,效果可表述為:整數就只有一種整數(int),沒有其它類型的整數(long、int8、int64 之類的)
          • Numpy 中的整數類型對應于 C 語言的數據類型,每種“整數”有自己的區間,要解決數據溢出問題,需要指定更大的數據類型(dtype)

          主站蜘蛛池模板: 亲子乱av一区二区三区| 精品无码一区二区三区亚洲桃色 | 日韩少妇无码一区二区三区| 久久精品国产一区二区电影| 精品一区二区视频在线观看| 国模无码人体一区二区| 精品一区二区三区无码视频| 日本一区二区三区不卡视频| 亚洲一区二区三区电影| 国产一区二区视频在线观看| 日本一区视频在线播放| 国产成人综合亚洲一区| 精品无码人妻一区二区三区18| 99精品一区二区三区| 久久99精品波多结衣一区| 成人精品一区二区三区不卡免费看 | 日韩中文字幕精品免费一区| 亚洲AV无码一区二区乱子伦| 国产精华液一区二区区别大吗| 国产激情一区二区三区成人91| 一区二区三区高清在线| 成人在线一区二区| 亚洲国模精品一区| 综合久久一区二区三区| 亚洲啪啪综合AV一区| 国产一区二区福利| 亚洲福利一区二区精品秒拍| 3d动漫精品啪啪一区二区免费 | 国产一区美女视频| 国产拳头交一区二区| 爆乳熟妇一区二区三区| 夜夜添无码试看一区二区三区| 国产成人无码一区二区三区 | 亚洲日韩国产一区二区三区在线| 亚洲av乱码一区二区三区香蕉| 中文字幕精品一区二区| 精品国产日韩亚洲一区91| 爆乳熟妇一区二区三区| 亚洲国产精品一区二区成人片国内| 日韩国产精品无码一区二区三区| 日本无卡码一区二区三区|