Wyściółka w przerwach wejściowych Szerokość 100%

Ok, więc wiemy, że ustawienie wypełnienia obiektu powoduje zmianę jego szerokości, nawet jeśli jest ustawione jawnie. Chociaż można argumentować logikę za tym, to powoduje pewne problemy z niektórymi elementami.

W większości przypadków po prostu dodajesz element potomny i dodajesz do niego wypełnienia zamiast ustawionego na 100%, ale dla wejść formularza nie jest to możliwy krok.

Spójrz na to: http://sandman.net/test/formcss.html

Drugie wejście ma padding ustawiony na 5px, które bardzo wolę od ustawienia domyślnego. Ale niestety to sprawia, że wejście rośnie 10px we wszystkich kierunkach, w tym dodanie 10px do 100% szerokości.

Problem polega na tym, że nie mogę dodać elementu potomnego wewnątrz wejścia, więc nie mogę go naprawić. Więc pytanie brzmi:

Czy Jest jakiś sposób na dodanie wypełnienia wewnątrz wejścia przy zachowaniu szerokości 100%? Musi być w 100% bo formularze będą renderowane w różnej szerokości więc nie wiem wcześniej jaka szerokość rodzic.

Author: Sandman, 2009-09-04

9 answers

Używając CSS3 możesz użyć właściwości box-sizing aby zmienić sposób, w jaki przeglądarka oblicza z wejścia.

  input.input {
    width: 100%;
    -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
    -moz-box-sizing: border-box;    /* Firefox, other Gecko */
    box-sizing: border-box;         /* Opera/IE 8+ */
  }

Możesz przeczytać więcej na ten temat tutaj: http://css-tricks.com/box-sizing/

 229
Author: Víctor Dieppa Garriga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-17 16:29:20

Nie wiem, jak jest kompatybilny z przeglądarkami (działa w Firefoksie i safari), ale można spróbować tego rozwiązania:

DIV.formvalue {
padding: 15px;
}
input.input {
margin: -5px;
}

(zamieściłem tylko wartości, które zmieniłem)

 7
Author: michaelk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-04 07:39:29

Jedną z opcji jest zawinięcie INPUT w DIV, która ma wyściółkę.

CSS:

div.formvalue {
    background-color: #eee;
    border: 1px solid red;
    padding: 10px;
    margin: 0px;
}

div.paddedInput {
    padding: 5px;
    border: 1px solid black;
    background-color: white;
}

div.paddedInput input {
    border: 0px;
    width: 100%;
}

HTML:

<div class="formvalue">
    <div class="paddedInput"><input type="text" value="Padded!" /></div>
</div>
 7
Author: user7116,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-04 07:50:22

Mam problemy z czymś podobnym. Mam tds z wejściami 100% i małą wyściółką. To co zrobiłem to wyrównałem padding na td w następujący sposób:

.form td {
    padding-right:8px;
}

.form input, .form textarea {
    border: 1px solid black;
    padding:3px;
    width:100%;
}

Wypełnienie 8px w celu uwzględnienia obramowania i wypełnienia obszaru wejściowego / textarea. Mam nadzieję, że to pomoże!

 4
Author: Keye,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-01 15:17:19

Często zapomnianicalc mogą przyjść na ratunek tutaj:

input {
  width: calc(100% - 1em);
  padding: 0.5em;
}

Ponieważ wiemy, że padding zwiększy Szerokość elementu, po prostu odejmujemy padding od całkowitej szerokości. Jest obsługiwany przez wszystkie główne przeglądarki, jest responsywny i nie wymaga niechlujnych formatów divs.

 4
Author: XanderStrike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-30 04:34:46

Może zdjąć obramowanie + tło z input, a zamiast tego zamknąć je w div z obramowaniem + tło i szerokością:100% i ustawić margines na input?

 1
Author: Amber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-04 07:50:37

Jednym z rozwiązań, które znalazłem, jest absolutnie pozycjonowanie wejścia za pomocą stosunkowo umieszczonego znacznika nadrzędnego.

<p class="full-width-input">
    <input type="text" class="text />
</p>

Zastosuj styl:

p.full-width-input {
    position: relative;
    height: 35px;
}

p.full-width-input input.text {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    padding: 5px;
}

Jedyną rzeczą, o której należy pamiętać, jest to, że znacznik akapitu wymaga ustawienia wysokości, ponieważ jego absolutnie umieszczone dzieci nie zwiększą jego wysokości. Pozwala to uniknąć konieczności ustawiania width: 100% poprzez zablokowanie go po lewej i prawej stronie elementu nadrzędnego.

 1
Author: Gabz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-16 13:52:07

Spróbuj użyć procentów do wypełnienia:

.input { 

  // remove border completely
  border: none;

  // don't forget to use the browser prefixes
  box-shadow: 0 0 0 1px silver;

  // Use PERCENTAGES for at least the horizontal padding
  padding: 5%; 

  // 100% - (2 * 5%)
  width: 90%; 

}

Jeśli martwisz się o użytkowników w starych przeglądarkach, którzy nie widzą cienia pola, po prostu nadaj wejściu subtelny kolor tła jako kopię zapasową. Jeśli używasz pikseli do tego rodzaju rzeczy, są szanse, że używasz ich gdzie indziej, co może stanowić kilka dodatkowych wyzwań, daj mi znać, jeśli je napotkasz.

 0
Author: stephenmurdoch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-30 21:28:53

Jedyne, co wiem, Aby temu zapobiec, to przypisanie takich wartości 100% -10. Ale ma pewne problemy ze zgodnością.

 -1
Author: Tarik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-04 07:35:44