欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

CSS -按鈕和輸入文本框的高度和對齊方式完全相同

錢琪琛2年前9瀏覽0評論

我需要有一個按鈕和一個tex框坐在一起,他們必須完美地對齊,如果一個比另一個大,那么它會立即顯而易見。

通常我不會在意瀏覽器之間的小差異,但是這兩個輸入在每個頁面上都處于非常突出的位置,是網站的一大特色,所以它們必須在所有主要的瀏覽器和縮放級別上完美地對齊。

有沒有人對如何實現這一點有什么建議?

只是作為一個快速的例子,我正在努力實現:新的谷歌主頁。開始輸入后,自動補全功能開始生效,搜索框移到頂部,一個藍色按鈕與文本框完全對齊。它可以完美地跨瀏覽器工作,但它是在一個表格中標記的。這是否意味著這可能是實現這一目標的最佳方式?

我建議嘗試設計輸入/按鈕對的父元素(在我的例子中是一個字段集)的樣式,以便給出一個通用的字體大小和字體系列,然后使用em度量來設計子元素的尺寸/填充/邊距。理想情況下,用相同的CSS樣式化所有的子元素。

給定以下加價:

<form action="#" method="post">
    <fieldset>
        <label for="something">A label for the text-input</label>
        <input type="text" name="something" id="something" />
        <button>It's a button!</button>
    </fieldset>
</form>

我建議使用類似于以下CSS的內容,但要適應您的特定設計:

fieldset {
    font-size: 1em;
    padding: 0.5em;
    border-radius: 1em;
    font-family: sans-serif;
}

label, input, button {
    font-size: inherit;
    padding: 0.2em;
    margin: 0.1em 0.2em;
    /* the following ensures they're all using the same box-model for rendering */
    -moz-box-sizing: content-box; /* or `border-box` */
    -webkit-box-sizing: content-box;
    box-sizing: content-box;
}

JS提琴演示。

在澄清這是復制/再現谷歌的文本輸入/提交按鈕的風格之后:

fieldset {
    font-size: 1em;
    padding: 0.5em;
    border-radius: 1em;
    font-family: sans-serif;
    border-width: 0;
}

label, input, button {
    font-size: inherit;
    padding: 0.3em 0.4em;
    margin: 0.1em 0.2em;
    -moz-box-sizing: content-box;
    -webkit-box-sizing: content-box;
    box-sizing: content-box;
    border: 1px solid #f90;
    background-color: #fff;
}

input {
    margin-right: 0;
    border-radius: 0.6em 0 0 0.6em;
}
input:focus {
    outline: none;
    background-color: #ffa;
    background-color: rgba(255,255,210,0.5);
}
button {
    margin-left: 0;
    border-radius: 0 0.6em 0.6em 0;
    background-color: #aef;
}
button:active,
button:focus {
    background-color: #acf;
    outline: none;
}

JS提琴演示。

盡管上述內容在Chromium 12.x和Opera 11.5 (Ubuntu 11.04)中運行良好,但Firefox在后一個演示中似乎顯示了一兩個額外的像素。

我認為這是非常可靠的:

http://codepen.io/herrfischer/pen/pbkyoJ

在這兩個元素上,只需使用:

display: inline-block;
padding: 10px 15px;
font-size: 20px;
border-radius: 0;
-webkit-appearance: none;
border: 1px solid transparent;

并使用“normalize . CSS”——僅此而已。在iPhone上也很好看:

enter image description here

為了達到這個目標,我已經糾結了幾個小時了。經過大量的研究和實驗,以下是在Chrome、Firefox、IE、Opera和Safari(至少是當代版本)中解決OP問題的方法:

對于需要對齊的所有類型的節點(按鈕、輸入、選擇),使用關于盒子模型的相同CSS 一定要明確指定邊框(或者至少是它的寬度); 不要明確指定高度。 是的,就是這么回事。下面是產生預期結果的最簡單的CSS:

select, input, button {
    border-width: 0px;
}

如果你需要進一步的樣式,請隨意添加顏色、填充和空白——一切都會好的。但是,無論你做什么,不要明確指定高度。這是唯一的障礙,因為每個瀏覽器計算高度的方式不同;有些會在選擇上方而不是按鈕上方留下一兩個額外的像素,有些會在按鈕上方而不是選擇上方留下像素,有些會按預期工作。

聲明一下,Chrome在這方面似乎是最一致的(也就是說,如果你確實指定了高度)——不過話說回來,誰在乎呢。

在2019年,你希望你的表單使用CSS Grid,即使它們只有一個輸入和一個按鈕。

這樣省了很多痛苦。

我有很多工作示例,所以我不會在這里張貼工作示例。相反,以下是你需要知道的事情。

外部容器可以是表單,為此CSS是display:grid;網格-模板-行:2em網格-模板-列:1fr auto

輸入應該有一個標簽,我假設它被設置為隱藏。因此輸入的CSS有grid-column:1;身高:100%;按鈕有網格-列:2;高度:100%

你要做你自己的事情,比如邊距、背景、填充、邊框、邊框半徑等等。

讓按鈕與輸入對齊的關鍵是在ems或另一個敏感響應友好單元中使用具有固定高度的網格行,并將輸入和按鈕設置為100%的高度。

我沒有發現上面的任何一個答案能產生像CSS Grid選項那樣簡潔和易于管理的代碼,CSS Grid選項在Firefox、Chrome和基于Webkit的瀏覽器上對我有效。

請注意,如果使用CSS網格,那么您的表單中需要零個div元素,但是,如果使用字段集,您可能需要將它們設置為display: content as CSS Grid不適用于字段集。

我在網上查了很多資源,如何做到最好,跨瀏覽器,主題獨立。我希望我有解決方案,但它不是100%(它需要通過垂直CSS填充來修剪)。我的問題是讓標簽和文本輸入具有相同的寬度和緊湊。

希望的結果:Wished result我通過幾次實驗找到的解決方案在我的博客中有描述:http://vasvadev . blogspot . cz/2013/02/CSS-exact-same-height-and-alignment-of . html

解決辦法 CSS:

div.lf-ui-label {
  margin: 0px;
  font-size: inherit;
  font-weight: bold;
  background-color: #CCCCCC;
  border-width: 0px;
  display: inline-block;
  vertical-align: middle;
  overflow: hidden;
  padding-top: 4px;
  padding-bottom: 4px;
}
div.lf-ui-label + input.lf-ui-form-item {
  padding: 5px 10px 5px 10px;
  margin: 0px 0px 0px -10px;
  font-size: inherit;
  background-color: #2b55a8 !important;
  vertical-align: middle;
  border-width: 0px;
}
input.lf-ui-form-item {
  background-color: #3b3b3b;
  font-size: inherit;
  padding: 4px 7px 4px 7px;
  font-weight: bold;
  border: none 0px;
  outline: none;
}

HTML:

<div style="padding:10px; font-family: Calibri; font-size: 14px;">
   <div class="lf-ui-label" 
    style="width:25%; padding-left: 10px;">Field text 14px&nbsp;</div><input 
    class="lf-ui-form-item" type="text" id="fr" name="fr" value="some value"      style="width:71%" />
</div>
<div  style="padding:10px; font-family: Calibri; font-size: 14px;">
  Field text <input class="lf-ui-form-item" type="text" value="some other value"/>
</div>

我的實驗代碼由js fiddle:css-exact-same-height-and-alignment-of.html分享

幾天來我一直試圖解決這個問題,但每個解決方案都不完整,也不能在不同的瀏覽器中運行。

我發現這段代碼可以完成工作:

float: left;
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
height: 33px;

我已經更新了小提琴-https://jsfiddle.net/p9maozk2/

您的另一個選擇是使用Bootstrap。我通過將類“input-group”分配給包裝輸入和按鈕的div來解決這個問題。

當試圖以跨瀏覽器的方式實現完美的像素尺寸時,您應該做的第一件事就是考慮實現CSS重置。我更喜歡HTML5樣板文件,但是你也可以從谷歌上找到其他的。

CSS重置是規范跨瀏覽器差異的基礎(尤其是在處理表單時)。

對于IE:您可以通過使用條件樣式表來設計不同的樣式:

<!--[if lt IE 7]> <html class="ie6" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="ie7e" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="ie8" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en"> <!--<![endif]-->

所以你會寫:

.ie6 .my-button-class {
  //
}

我發現這個解決方案似乎行得通。嘗試添加:

-webkit-box-sizing:border-box;
  -moz-box-sizing:border-box;
  box-sizing:border-box;

添加到兩個元素的當前css中,這仍然會使它們稍微錯位,然后在錯位的元素中使用頂部填充。我發現:

padding-top: 2px;

為我工作。

這是一個垂直對齊的input + button組合的例子,元素之間沒有邊距(由于font-size:0px ),當選擇時,輸入字段的垂直高度不會增加;這里字體大小控制垂直高度,而行高會導致垂直錯位。

超文本標記語言

<div class="emailbuttonparent">
<input type="email" class="emailaddr" placeholder="email" />
<input type="button" value="Get Started" />
</div>

鋼性鑄鐵

.emailbuttonparent {
    font-size: 0;
}

select, input, button {
    display:inline-block;
    border-width: 0px;
    font-size: 25px;
}


    input[type="email"]:focus {
        background-color: #f1f1f1;
        color: #fff;
        outline: 0;
    }

嗯,這是一個很好的十年左右,我對已經發布的任何內容都不滿意,所以我花了幾天時間來解決這個問題,至少在以下瀏覽器版本中可以完美地工作:

Chrome & gt= 4 Firefox & gt= 4 Safari & gt= 3 Opera & gt= 11 IE & gt= 9 邊緣97 超文本標記語言

<div id="container">
  <input type="text">
  <button>test</button>
</div>

半鑄鋼?鋼性鑄鐵(Cast Semi-Steel)

#container,
#container input,
#container button {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  -o-box-sizing: border-box;
  box-sizing: border-box;
}

#container {
  display: table;
}

#container input,
#container button {
  float: left;
  display: table-cell;
  padding: 0;
  height: ...; /* e.g. 2.8em */
  font-size: ...; /* e.g. 14px */
  border: ...; /* e.g. 1px solid red */
}

除了上述最低要求的CSS規則,你可以改變大多數其他常用的樣式規則,如顏色、背景色、框陰影、邊框半徑等。無論你喜歡什么。然而,有些事情可能會限制你的風格選擇。例如,您應該避免添加/調整填充,尤其是頂部/底部,因為它可能會剪切文本(如果可能,請使用高度/寬度規則)。

使用帶有圖像的背景div作為輸入。這更容易保持一致。此外,絕對定位對于這種情況也很有用。

編輯:這個答案是我5年前寫的,現在有更好的辦法。

.sdiv {
padding-top: 33px;
padding-left: 33px;
height: 123px;
border: 1px dotted red;
border-radius: 7px;
background-color: Black;
}

.sbtn {
float:left;
height:24px;
width: 24px;
padding: 3px 0 0 0;
border:none;
margin-top: 14px;
background-color: white;
}

.stxt {
width: 180px;
height:22px;
float:left;
border:none;
padding-left:3px;
margin-top: 14px;
}

<div class="sdiv">
<form action="/">

<input class="stxt" type="text" placeholder="Search..." value="">

<button class="sbtn" type="submit">
<svg xmlns="http://www.w3.org/2000/svg" role="icon" viewBox="0 0 18 18" width="18" height="18">
<path fill-rule="evenodd" d="M 12.864 11.32 h -0.813 l -0.288 -0.277 A 6.66 6.66 0 0 0 13.38 6.69 a 6.69 6.69 0 1 0 -6.69 6.69 a 6.66 6.66 0 0 0 4.354 -1.617 l 0.278 0.288 v 0.813 L 16.467 18 L 18 16.467 l -5.136 -5.146 Z m -6.174 0 a 4.625 4.625 0 0 1 -4.632 -4.63 A 4.625 4.625 0 0 1 6.69 2.058 a 4.625 4.625 0 0 1 4.63 4.632 a 4.625 4.625 0 0 1 -4.63 4.63 Z" />
</svg>
</button>

</form>
</div>