Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Как сверстать input без картинок (https://javascript.ru/forum/xhtml-html-css/24725-kak-sverstat-input-bez-kartinok.html)

greatilya 11.01.2012 20:48

Как сверстать input без картинок
 
Вложений: 1
Подскажите, как можно сверстать подобный input type="text" не используя картинок. Как видно из картинки сложность в том, что элемент помимо однопиксельной границы (тут всё понятно, border:#999 1px solid), имеет закругленную обводку толщиной 4 пикселя. Как сделать такую обводку не используя картинок?

melky 11.01.2012 20:49

обернуть его во что-нибудь. дать инпуту border, и его wrapper тоже border, но уже с border-radius.

greatilya 11.01.2012 20:52

Цитата:

Сообщение от melky
обернуть его во что-нибудь

а без обертки на CSS3 ничего не вымутить?

melky 11.01.2012 21:05

если просто <input> хотите, то никак.

Seva1986 11.01.2012 21:45

Цитата:

Сообщение от greatilya
а без обертки на CSS3 ничего не вымутить?


можно, но только для нормальных браузеров, через градиент, background-size и множественные фоновые изображения.

melky 11.01.2012 22:09

Цитата:

Сообщение от Seva1986 (Сообщение 149705)
можно, но только для нормальных браузеров, через градиент, background-size и множественные фоновые изображения.

можно пример?

Seva1986 11.01.2012 22:52

Цитата:

Сообщение от melky
можно пример?

Вот.

<!DOCTYPE HTML>
<html lang="ru">
<head>
    <meta charset="UTF-8"/>
    <title>Тест</title>
    <style>
        input {
            border: 4px solid #999;
            border-radius: 4px;
            height: 50px;
            width: 300px;

            background-color: #fff;
            background-image: -moz-linear-gradient(#f00, #fff 1px), -moz-linear-gradient(#f00, #fff 1px), -moz-linear-gradient(0deg, #f00, #fff 1px), -moz-linear-gradient(0deg, #f00, #fff 1px);
            background-image: -webkit-linear-gradient(#f00, #fff 1px), -webkit-linear-gradient(#f00, #fff 1px), -webkit-linear-gradient(0deg, #f00, #fff 1px), -webkit-linear-gradient(0deg, #f00, #fff 1px);
            background-image: -o-linear-gradient(#f00, #fff 1px), -o-linear-gradient(#f00, #fff 1px), -o-linear-gradient(0deg, #f00, #fff 1px), -o-linear-gradient(0deg, #f00, #fff 1px);
            background-image: -ms-linear-gradient(#f00, #fff 1px), -ms-linear-gradient(#f00, #fff 1px), -ms-linear-gradient(0deg, #f00, #fff 1px), -ms-linear-gradient(0deg, #f00, #fff 1px);
            background-image: linear-gradient(#f00, #fff 1px), linear-gradient(#f00, #fff 1px), linear-gradient(0deg, #f00, #fff 1px), linear-gradient(0deg, #f00, #fff 1px);
            background-size: auto 1px, auto 1px, 1px auto, 1px auto;
            background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
            background-position: 0 0, 0 100%, 0 0, 100% 0;

        }
    </style>
</head>
<body>

<input/>

<script>

</script>

</body>
</html>

melky 11.01.2012 23:01

хм. интересное применение!

Seva1986 11.01.2012 23:07

Цитата:

Сообщение от melky
хм. интересное применение!

тут вообще взрыв мозга http://lea.verou.me/css3patterns/

а когда это начнёт работать то вообще красота будет!

рони 12.01.2012 02:10

greatilya,
Вариант...jQuery Corner
http://code.google.com/p/jquerycurvycorners/

trikadin 12.01.2012 02:55

Цитата:

Сообщение от Seva1986
тут вообще взрыв мозга http://lea.verou.me/css3patterns/

Браузер чуть не сдох на этой странице)

Aetae 12.01.2012 03:00

У ФФ есть outline-radius))
А так box-sadow вовнуть и border с border-radius вовне.

FF:
<input type="text" value="a b c d e f">
<style>
input{
-moz-outline-radius: 5px;
outline: 5px solid #ddd;
border:1px solid #aaa;
padding:4px;
}
</style>


Остальные:
<input type="text" value="a b c d e f">
<style>
input{
-moz-box-shadow: inset 0 0 0 1px #aaa;
-webkit-box-shadow: inset 0 0 0 1px #aaa;
-o-box-shadow: inset 0 0 0 1px #aaa;
box-shadow: inset 0 0 0 1px #aaa;

-moz-border-radius:5px;
-webkit-border-radius:5px;
-o-border-radius:5px;
border-radius:5px;

border:5px solid #ddd;
padding:5px;
}
</style>


Ну и для ослика - что-ить своё.)

greatilya 12.01.2012 06:23

Aetae,
Ваш второй вариант вполне подходит, спасибо!

FINoM 12.01.2012 16:10

Еще есть свойство outline

trikadin 12.01.2012 16:17

Цитата:

Сообщение от FINoM
Еще есть свойство outline

Решению проблемы оно не поможет) К тому же, ie7 его поддерживает?

greatilya, кстати, такие советы лучше задавать на форуме сайта http://htmlbook.ru . Больше шансов, что там помогут.

B~Vladi 18.01.2012 23:12

greatilya, есть ещё вариант. Глянь тут.

Gozar 19.01.2012 00:18

Цитата:

Сообщение от trikadin (Сообщение 149874)
К тому же, ie7 его поддерживает?

С недобраузерами борются лопатами и пояльником в задницу. Пытаться сделать что-то на css для ie ниже 10 версии бесполезно.

B~Vladi 19.01.2012 00:49

Цитата:

Сообщение от Gozar
Пытаться сделать что-то на css для ie ниже 10 версии бесполезно.

Слишком категорично. Касаемо закругленных углов вполне реально, я дал пример.

Gozar 19.01.2012 10:36

Цитата:

Сообщение от B~Vladi (Сообщение 151342)
Слишком категорично.

Я считаю что не слишком.

Надежда о том, что IE будет браузером с хорошим отношением к верстальщикам умерла во мне месяца три назад окончательно.

Цитата:

Сообщение от B~Vladi (Сообщение 151342)
Касаемо закругленных углов вполне реально, я дал пример.

Если ты про кучу дивов, то я отношу это к "паяльнику".

В силу реализации в последнее время кучи анимации, фич и примочек в виде дизайнерского изврата я понял, что без написания кода под последние браузеры и отдельно под ie7 и ie8 и ie9 не обойтись.

Весь этот graceful degradation существует благодаря ie. Остальные браузеры давно обновились и по моей статистике поддерживают всё что нужно из последних наворотов. Старые версии их быстро уходят и в degradation нет смысла.

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

B~Vladi 19.01.2012 10:58

Цитата:

Сообщение от Gozar
я отношу это к "паяльнику"

Согласен, но работает же :)

qwertyuiop10 25.01.2012 21:19

outline + border
<html>
<head>
<style>
input{
outline:1px solid #111;
border:4px solid #999;
border-radius:5px;
}
</style>
</head>
<body>
<input type="text"/>
</body>
</html>

Почти получилось...

Aetae 25.01.2012 21:43

qwertyuiop10, щито?
В теме уже преведены нормальные работчие варианты. То что у вас получится х*ня, можно сказать и не запуская.

melky 25.01.2012 22:08

qwertyuiop10, сравните рисунок (условие) и то, что у вас получилось (результат)

Nyamo 26.01.2012 07:17

box-shadow + border-radius + css3-pie (для IE).
градиенты лепить не советую.

qwertyuiop10 26.01.2012 07:18

melky,

Я же говорю, почти )

Aetae 26.01.2012 15:59

Цитата:

Сообщение от Nyamo (Сообщение 152951)
box-shadow + border-radius + css3-pie (для IE).
градиенты лепить не советую.

тему не читал@сразу отвечал, да?

trikadin 26.01.2012 16:10

Тема закрыта, потому что исчерпывающий ответ уже дан.


Часовой пояс GMT +3, время: 03:03.