整合營銷服務商

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

          免費咨詢熱線:

          前端開發之輸入框換行

          端--輸入框換行,高度自適應

          最近項目遇到一個說小不小說大不大的問題,輸入框要自動換行,并且高度還得自適應,我試了幾種方式,

          1.input 輸入,input不能換行,上網查詢了說將css設為word-break: break-all; word-wrap:break-word;也是無效的。

          2.div 設置contenteditable="true"屬性,這種方法可以實現輸入內容自動換行,并且自適應高度,但是項目需要光標從邊輸入,我試過text-align:right是無效的。所以這種方式也不行。

          3.textarea,文本輸入框,想想這個應該可以了吧,文本輸入框是可以內容自動換行,可是高度怎么都是固定的啊。我還是沒解決。百度吧,終于找到解決辦法啦。

          最后遇到一個光標在placeholder提示文字上面,解決辦法:#textarea::-webkit-input-placeholder{ padding-right: 4px;}

          <!DOCTYPE html>

          <html>

          <head>

          <meta charset="utf-8">

          <title></title>

          <style>

          #textarea {

          display: block;

          margin:0 auto;

          overflow: hidden;

          width: 550px;

          font-size: 14px;

          height: 18px;

          line-height: 24px;

          padding:2px;

          text-align: right;

          }

          textarea {

          outline: 0 none;

          border-color: rgba(82, 168, 236, 0.8);

          box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6);

          }

          </style>

          </head>

          <body>

          <textarea id="textarea" placeholder="回復內容"></textarea>

          <script>

          var autoTextarea = function (elem, extra, maxHeight) {

          extra = extra || 0;

          var isFirefox = !!document.getBoxObjectFor || 'mozInnerScreenX' in window,

          isOpera = !!window.opera && !!window.opera.toString().indexOf('Opera'),

          addEvent = function (type, callback) {

          elem.addEventListener ?

          elem.addEventListener(type, callback, false) :

          elem.attachEvent('on' + type, callback);

          },

          getStyle = elem.currentStyle ? function (name) {

          var val = elem.currentStyle[name];

          if (name === 'height' && val.search(/px/i) !== 1) {

          var rect = elem.getBoundingClientRect();

          return rect.bottom - rect.top -

          parseFloat(getStyle('paddingTop')) -

          parseFloat(getStyle('paddingBottom')) + 'px';

          };

          return val;

          } : function (name) {

          return getComputedStyle(elem, null)[name];

          },

          minHeight = parseFloat(getStyle('height'));

          elem.style.resize = 'none';

          var change = function () {

          var scrollTop, height,

          padding = 0,

          style = elem.style;

          if (elem._length === elem.value.length) return;

          elem._length = elem.value.length;

          if (!isFirefox && !isOpera) {

          padding = parseInt(getStyle('paddingTop')) + parseInt(getStyle('paddingBottom'));

          };

          scrollTop = document.body.scrollTop || document.documentElement.scrollTop;

          elem.style.height = minHeight + 'px';

          if (elem.scrollHeight > minHeight) {

          if (maxHeight && elem.scrollHeight > maxHeight) {

          height = maxHeight - padding;

          style.overflowY = 'auto';

          } else {

          height = elem.scrollHeight - padding;

          style.overflowY = 'hidden';

          };

          style.height = height + extra + 'px';

          scrollTop += parseInt(style.height) - elem.currHeight;

          document.body.scrollTop = scrollTop;

          document.documentElement.scrollTop = scrollTop;

          elem.currHeight = parseInt(style.height);

          };

          };

          addEvent('propertychange', change);

          addEvent('input', change);

          addEvent('focus', change);

          change();

          };

          </script>

          <script>

          var text = document.getElementById("textarea");

          autoTextarea(text);// 調用

          </script>

          </body>

          </html>

          面這種單詞直接打斷換行:

          這里涉及到兩個css屬性(很多年傻傻分不清):

          1. word-break (當行尾放不下一個單詞時,決定單詞內部該怎么擺放)

          2. word-wrap(當行尾放不下時,決定單詞內是否允許換行)

          normal 使用瀏覽器默認的換行規則。

          break-all 允許在單詞內換行(強行上,擠不下的話剩下的就換下一行顯示)。

          keep-all 只能在半角空格或連字符處換行(放不下了,那就另起一行展示)。

          normal 只在允許的斷字點換行(單詞太長,換行顯示,再超過一行就溢出顯示)。

          break-word 在長單詞或 URL 地址內部進行換行(當單詞太長時,先嘗試換行,換行后還是太長,單詞內還可以換行)。

          還有話說!

          注意,上面這些換行神馬的都是針對英文單詞,像CJK(中文/日文/韓文)這樣的語言就算了,因為他們不需要(真不影響閱讀)。

          在來看開頭那張圖里的問題,你加上 word-break: keep-all;word-wrap: break-word;正常就可以了。如有問題,歡迎討論評論區或者直接私信。

          TML 段落

          段落是通過 <p> 標簽定義的。

          實際例子

          <p>This is a paragraph</p>
          <p>This is another paragraph</p>
          

          注釋:瀏覽器會自動地在段落的前后添加空行。(<p> 是塊級元素

          提示:使用空的段落標記 <p></p> 去插入一個空行是個壞習慣。用 <br /> 標簽代替它?。ǖ遣灰?<br /> 標簽去創建列表。)

          不要忘記結束標簽

          即使忘了使用結束標簽,大多數瀏覽器也會正確地將 HTML 顯示出來:

          實際例子

          <p>This is a paragraph
          <p>This is another paragraph
          

          上面的例子在大多數瀏覽器中都沒問題,但不要依賴這種做法。忘記使用結束標簽會產生意想不到的結果和錯誤。

          注釋:在未來的 HTML 版本中,不允許省略結束標簽。(現在開發已經不允許了)

          提示:通過結束標簽來關閉 HTML 是一種經得起未來考驗的 HTML 編寫方法。清楚地標記某個元素在何處開始,并在何處結束,不論對您還是對瀏覽器來說,都會使代碼更容易理解。

          HTML 折行(換行)

          如果您希望在不產生一個新段落的情況下進行換行(新行),請使用 <br /> 標簽:

          <p>This is<br />a para<br />graph with line breaks</p>
          

          <br /> 元素是一個空的 HTML 元素。由于關閉標簽沒有任何意義,因此它沒有結束標簽。

          <br> 還是 <br />

          你會發現 <br> 與 <br /> 很相似。

          在 XHTML、XML 以及未來的 HTML 版本中,不允許使用沒有結束標簽(閉合標簽)的 HTML 元素。

          即使 <br> 在所有瀏覽器中的顯示都沒有問題,使用 <br /> 也是更長遠的保障。

          HTML 輸出 - 有用的提示

          我們無法確定 HTML 被顯示的確切效果。屏幕的大小,以及對窗口的調整都可能導致不同的結果。

          對于 HTML,您無法通過在 HTML 代碼中添加額外的空格或換行來改變輸出的效果。

          當顯示頁面時,瀏覽器會移除源代碼中多余的空格和空行。所有連續的空格或空行都會被算作一個空格。需要注意的是,HTML 代碼中的所有連續的空行(換行)也被顯示為一個空格。

          知識總結

          標簽 描述

          <p> 定義段落。

          <br /> 插入單個折行(換行)。

          如果您覺得有用,麻煩點個贊,支持一下!!

          歡迎提問與建議。


          主站蜘蛛池模板: 日韩一区二区在线免费观看| 无码日韩精品一区二区免费暖暖 | 精品不卡一区中文字幕 | 国产福利精品一区二区| 女人18毛片a级毛片一区二区| 狠狠爱无码一区二区三区| 国精产品一区一区三区| 国产精品亚洲一区二区三区久久 | 日本精品夜色视频一区二区| 亚洲日本va午夜中文字幕一区| 国产精品一区电影| ...91久久精品一区二区三区| 日韩一区二区三区视频| 亚洲Av无码国产一区二区| 日韩免费视频一区二区| 亚洲av片一区二区三区| 无码人妻一区二区三区兔费| 久久精品国产一区二区三区肥胖| 日韩精品一区二区三区中文字幕| 国产精品电影一区| 亚洲bt加勒比一区二区| 国产午夜毛片一区二区三区| 国产一区二区三区播放| 日韩在线一区二区| 国产成人无码精品一区二区三区 | 国产精品成人99一区无码| 中文字幕在线不卡一区二区| 无码人妻精品一区二区三| 手机看片一区二区| 亚洲第一区在线观看| 国偷自产视频一区二区久| 怡红院一区二区三区| 无码一区二区波多野结衣播放搜索 | 亚洲一区无码精品色| 精品国产一区二区三区久久狼| 久久精品一区二区三区AV| 亚洲国产精品一区二区久久| 国产日韩一区二区三区在线观看| 国产99精品一区二区三区免费| 高清一区二区在线观看| 国产一区二区三区国产精品|