Элемент html <input> игнорирует свойства CSS left + right?

Я заметил, что элемент <input> в HTML игнорирует пару свойств CSS "left" и "right". То же для пары «верх» и «низ». См. Пример кода ниже:

<html>
    <head>
        <style><!--
        #someid {
            position: absolute;
            left: 10px;
            right: 10px;
            top: 10px;
            bottom: 10px;
        }
        --></style>
    </head>
    <body>
        <input type = "text" id = "someid" value = "something"/>
    </body>
</html>

<input> должен занимать почти все пространство в браузере (за исключением 10-пиксельной границы вокруг него). Он отлично работает в Safari, но в FireFox и IE <input> остается маленьким в верхнем левом углу браузера.

Если я использую «left» и «width», «top» и «height», тогда все работает нормально. Однако я не знаю, что такое ширина и высота, я хочу, чтобы они регулировались в зависимости от размера окна браузера.

Есть идеи, как это обойти?

Спасибо.

обратите внимание, что input type = 'text' будет, независимо от того, насколько он большой, даст вам только одну строку textinput. Вместо этого используйте <textarea>.

Pim Jager 16.01.2009 16:10

Я получил -1 за предложение :)

annakata 17.01.2009 21:02

+1 У меня такая же проблема!

Web_Designer 16.09.2011 08:43

См. Этот stackoverflow.com/a/16288462/340290, чтобы развернуть элементы input в соответствии с левым и правым значениями в абсолютном макете БЕЗ элемента оболочки. (см. мой комментарий stackoverflow.com/questions/16284087/…, чтобы узнать о других проблемах с оболочкой)

manikanta 04.03.2019 18:22
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
23
4
26 750
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Он не игнорирует левый или верхний, вы увидите, что он позиционируется на 10 пикселей наружу. Происходит то, что право и низ не соблюдаются. Элементы формы обрабатываются немного специально в механизмах компоновки, вполне возможно, что FF / IE считают ширину / максимальную длину ввода более важной, я действительно не разбирался, почему это может быть.

Хотя это немного странно. Возможно, вам лучше было бы взглянуть на <textarea>, который предназначен для ввода большого текста, который вы можете увеличить до 100% размеров, применив width: 100%; height: 100%; и позаботившись о поле 10 пикселей в контейнере div.


WFM:

<html>
<head>
    <style>
    body
    {
        margin: 0px;
    }
    div
    {
        position: absolute; margin: 2%; width: 96%; height: 96%;
    }
    textarea
    {
        position: absolute; width: 100%; height: 100%; 
    }
    </style>
</head>
<body>
    <div>
        <textarea></textarea>
    </div>
</body>

На самом деле textarea ведет себя так же. Мне нужны как поля ввода, так и текстовые поля в довольно сложном макете. Я свел проблему к этому простому сценарию; если я смогу это сделать, то и более сложный макет тоже подойдет.

Gabriel 16.01.2009 16:10

Я думаю, вам лучше тогда опубликовать более полный html / css, но посмотрите мои изменения.

annakata 16.01.2009 16:18

Я понял. Я попробовал вашу идею с вводными данными, и она тоже работает. В основном, если я помещаю фиктивные div вокруг своих входов, я могу установить для входов 100% ширину и высоту, а затем я просто позиционирую div. Спасибо.

Gabriel 16.01.2009 16:24

width: 100% и height: 100% должны быть добавлены к телу, а также к элементам html.

John_ 16.01.2009 16:25
Ответ принят как подходящий

Вы можете использовать Wrapper DIV

        <html> 
            <head> 
                    <style><!-- 
                #wrapper { 
                    position: absolute; 
                    left: 10px; 
                    right: 10px; 
                    top: 10px; 
                    bottom: 10px; 
                } 
                #someid { 
                  /*  position:relative;  EDIT: see comments*/
                    height:100%; 
                    width:100% 
                }
    --></style>
                </head>
            <body>
              <div id = "wrapper">
              <input type = "text" id = "someid" value = "something"/>
              </div>
           </body>
       </html>

Кроме того, действительно ли требуется position: relative на входе? Не думаю, что положение передается по наследству.

SpoonMeiser 16.01.2009 16:32

@SpoonMeiser. Спасибо. (Английский не мой родной язык). Вы где и поправляете насчет позиции.

Luis Melgratti 16.01.2009 16:37

Спасибо! Большая помощь! У меня была такая же проблема.

Web_Designer 16.09.2011 08:48

http://reference.sitepoint.com/css/bottom скажем, относительно Internet Explorer (<= 6)

don’t support the specification of both the position and the dimensions of an absolutely positioned element using top, right, bottom, and left together; they’ll use the last vertical and horizontal position specified, and need the dimensions to be specified using width and height

В Safari это выглядит не так, как должно отображаться. Поскольку вы не указали значение высоты, input по умолчанию будет использовать размер последнего унаследованного размера шрифта.

Правое и нижнее расположение также будет проигнорировано, потому что вы пытаетесь одновременно установить верхнее и левое поля. Похоже, в этом случае они имеют приоритет.

Если вам нужно использовать поле input и отображать его внутри всей ширины и высоты окна браузера во время его просмотра, вам нужно переделать CSS следующим образом:

body{
    margin:10px;
}

#someid{
    display:block;
    margin:0 auto;
    width:100%;
    height:100%;
}

Это расширит поле input до такой высоты и ширины, в которой находится окно браузера пользователя. У него также будет поле по 10 пикселей с каждой стороны от окна браузера.

Если вам нужно иметь поле, установите его в стиле body или обертку DIV вокруг поля ввода.

Другие вопросы по теме