Базовые CSS-стили различных элементов

  • Tutorial
В этом топике представлены лаконичные базовые стили для различных элементов: кнопок, ссылок, форм, теней, градиентов, которые можно использовать в своих проектах. Да и просто разобраться в принципах работы таких конструкций проще на несложных примерах.



Демонстрация стилей / Скачать исходники

Базовая конструкция


В примерах базовая конструкция блока выглядит так:

<div class="block-level"></div>

.block-level {
    width: 120px;
    height: 120px;
    margin: 20px;
    position: relative;
    float: left;
}


Тени


Блок отбрасывает тень в разные стороны:



.drop-shadow {
    background: #9479fa;
}
 
.drop-shadow.top {
    box-shadow: 0 -4px 2px -2px rgba(0,0,0,0.4)
}
 
.drop-shadow.right {
    box-shadow: 4px 0 2px -2px rgba(0,0,0,0.4)
}
 
.drop-shadow.bottom {
    box-shadow: 0 4px 2px -2px rgba(0,0,0,0.4)
}
 
.drop-shadow.left {
    box-shadow: -4px 0 2px -2px rgba(0,0,0,0.4)
}


Выделение блока тенью:



div[class*="emphasize-"] {
    background: #69D2E7;
}
 
.emphasize-dark {
    box-shadow: 0 0 5px 2px rgba(0,0,0,.35)
}
 
.emphasize-light {
    box-shadow: 0 0 0 10px rgba(255,255,255,.25)
}
 
.emphasize-inset {
    box-shadow: inset 0 0 7px 4px rgba(255,255,255,.5)
}
 
.emphasize-border {
    box-shadow: inset 0 0 0 7px rgba(255,255,255,.5)
}


Выпуклые блоки:



div[class*="embossed"] {
    background: #8ec12d;
    color: #333;
    text-shadow: 0 1px 1px rgba(255,255,255,0.9);
}
 
.embossed-light {
    border: 1px solid rgba(0,0,0,0.05);
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.7);
}
 
.embossed-heavy {
    border: 1px solid rgba(0,0,0,0.05);
    box-shadow: 
        inset 0 2px 3px rgba(255,255,255,0.3), 
        inset 0 -2px 3px rgba(0,0,0,0.3),
        0 1px 1px rgba(255,255,255,0.9);
}


Градиенты


Разные типы градиентов:



div[class*="gradient"]{
    background-color: #DEB8A0;
    box-shadow: 0 0 0 1px #a27b62;
}
 
.gradient-light-linear {
    background-image: linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0));
}
 
.gradient-dark-linear {
    background-image: linear-gradient(rgba(0,0,0,.25), rgba(0,0,0,0));
}


Закругленные углы




div[class*="rounded"] {
    background: #fca1cc;
}
 
.light-rounded {
    border-radius: 3px;
}
 
.heavy-rounded {
    border-radius: 8px;
}
 
.full-rounded {
    border-radius: 50%;
}
 
.barrel-rounded {
    border-radius: 20px/60px;
}


Ссылки


Базовая конструкция:

<!-- Inline -->
Просто какой-то текст и <a href="#">ссылка</a>.
 
<!-- Block -->
<a href="#">Ссылка</a>


Несколько примеров стилей для ссылки в тексте:



.inline-link-1 {
    display: inline-block;
    margin: 0 0.2em;
    padding: 3px;
    background: #97CAF2;
    border-radius: 2px;
    transition: all 0.3s ease-out; 
    /* Font styles */
    text-decoration: none;
    font-weight: bold;
    color: white;
}
 
.inline-link-1:hover {
    background: #53A7EA
}
 
.inline-link-1:active {
    background: #C4E1F8
}
 
.inline-link-1:visited {
    background: #F2BF97
}




.inline-link-2 {
    display: inline-block;
    border-bottom: 2px dashed rgba(0,0,0,0.9);
    /* Font styles */
    text-decoration: none;
    color: #777;
}
 
.inline-link-2:hover {
    border-bottom-style: dotted;
}
 
.inline-link-2:active {
    border-bottom-style: solid;
}
 
.inline-link-2:visited {
    border-bottom: 2px solid #97CAF2;
}




.inline-link-3 {
    display: inline-block;
    position: relative;
    padding-left: 6px;
    /* Font styles */
    text-decoration: none;
    color: #6AB3EC;
    text-shadow: 0 1px 1px rgba(255,255,255,0.9);
}
 
.inline-link-3:hover {
    color: #3C9CE7;
}
 
.inline-link-3:before {
    content: "\25BA";
    font-size: 80%;
    display: inline-block;
    padding-right: 3px;
    pointer-events: none;
}
 
.inline-link-3:hover:before {
    color: #F2BF97;
}


Ссылка в Metro-стиле:



.metro {
    display: inline-block;
    padding: 10px;
    margin: 10px;
    background: #08C;
    /* Font styles */
    color: white;
    font-weight: bold;
    text-decoration: none;
}
 
.metro:hover {
    background: #0AF
}

.metro.three-d {
    position: relative;
    box-shadow: 
        1px 1px #53A7EA, 
        2px 2px #53A7EA, 
        3px 3px #53A7EA;
    transition: all 0.1s ease-in;
}
 
.metro.three-d:active {
    box-shadow: none;
    top: 3px;
    left: 3px;
}


Ссылка с обводкой:



.bordered-link {
    display: inline-block;
    padding: 8px;
    border: 3px solid #FCB326;
    border-radius: 6px;
    box-shadow: 
        0 2px 1px rgba(0, 0, 0, 0.2), 
        inset 0 2px 1px rgba(0, 0, 0, 0.2);
    /* Font styles */
    text-decoration: none;
    font-size: 14px;
    text-transform: uppercase;
    color: #222;
}
 
.bordered-link:hover {
    border-color: #FDD68B
}
 
.bordered-link:active {
    border-color: #FEE8BD
}


Красивые кнопочки:



.modern {
    display: inline-block;
    margin: 10px;
    padding: 8px 15px;
    background: #B8ED01;
    border: 1px solid rgba(0,0,0,0.15);
    border-radius: 4px;
    transition: all 0.3s ease-out;
    box-shadow: 
        inset 0 1px 0 rgba(255,255,255,0.5), 
        0 2px 2px rgba(0,0,0,0.3), 
        0 0 4px 1px rgba(0,0,0,0.2); 
    /* Font styles */
    text-decoration: none;
    text-shadow: 0 1px rgba(255,255,255,0.7);
}
 
.modern:hover {
    background: #C7FE0A
}

.embossed-link {
    box-shadow: 
        inset 0 3px 2px rgba(255,255,255,.22), 
        inset 0 -3px 2px rgba(0,0,0,.17), 
        inset 0 20px 10px rgba(255,255,255,.12), 
        0 0 4px 1px rgba(0,0,0,.1), 
        0 3px 2px rgba(0,0,0,.2);
}
 
.modern.embossed-link {
    box-shadow: 
        inset 0 1px 0 rgba(255,255,255,0.5), 
        0 2px 2px rgba(0,0,0,0.3), 0 0 4px 1px rgba(0,0,0,0.2), 
        inset 0 3px 2px rgba(255,255,255,.22), 
        inset 0 -3px 2px rgba(0,0,0,.15), 
        inset 0 20px 10px rgba(255,255,255,.12), 
        0 0 4px 1px rgba(0,0,0,.1), 0 3px 2px rgba(0,0,0,.2);
}
 
.modern.embossed-link:active {
    box-shadow: 
        inset 0 -2px 1px rgba(255,255,255,0.2), 
        inset 0 3px 2px rgba(0,0,0,0.12);
}

.socle {
    position: relative;
    z-index: 2;
}
 
.socle:after {
    content: "";
    z-index: -1;
    position: absolute;
    border-radius: 6px;
    box-shadow: 
        inset 0 1px 0 rgba(0,0,0,0.1),
        inset 0 -1px 0 rgba(255,255,255,0.7);
    top: -6px;
    bottom: -6px;
    right: -6px;
    left: -6px;
    background: linear-gradient(rgba(0,0,0,0.1), rgba(0,0,0,0));
}


Input


Основная конструкция:

<input type="text" placeholder="Input name">


Добавляет border-radius по клику:



.simple-input {
    display: block;
    padding: 5px;
    border: 4px solid #F1B720;
    border-radius: 5px;
    color: #333;
    transition: all 0.3s ease-out;
}
 
.simple-input:hover {
    border-radius: 8px
}
 
.simple-input:focus {
    outline: none;
    border-radius: 8px;
    border-color: #EBD292;
}


Повторяет iOS инпуты:



.mac {
    display: block;
    border: none;
    border-radius: 20px;
    padding: 5px 8px;
    color: #333;
    box-shadow: 
        inset 0 2px 0 rgba(0,0,0,.2), 
        0 0 4px rgba(0,0,0,0.1);
}
 
.mac:focus {
    outline: none;
    box-shadow: 
        inset 0 2px 0 rgba(0,0,0,.2), 
        0 0 4px rgba(0,0,0,0.1), 
        0 0 5px 1px #51CBEE;
}


С градиентом:



.depth {
    display: block;
    border: 1px solid rgba(255,255,255,0.6);
    background: linear-gradient(#eee, #fff);
    transition: all 0.3s ease-out;
    box-shadow: 
        inset 0 1px 4px rgba(0,0,0,0.4);
    padding: 5px;
    color: #555;
}
 
.depth:focus {
    outline: none;
    background-position: 0 -1.7em;
}


Вместо формы ввода просто линия:



.line {
    display: block;
    border: none;
    color: #333;
    background: transparent;
    border-bottom: 1px dotted black;
    padding: 5px 2px 0 2px;
}
 
.line:focus {
    outline: none;
    border-color: #51CBEE;
}


Примеры взяты из статьи Basic Ready-to-Use CSS Styles.

Похожие публикации

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 54

    +6
    div[class*="embossed"]
    Не учите такому никого.
      –4
      div[class^="embossed"]
      Потому что важно выделить элементы, у которых им класса начинается с «embossed».
        +4
        Я прекрасно понимаю что это означает, только вот чем плох вариант всем элементам добавить класс .embossed? Ни дай бог такое кто-то себе скопирует и привыкнет использовать.
        • НЛО прилетело и опубликовало эту надпись здесь
            0
            Пруфлинк на рефлоуметр в студию.
            • НЛО прилетело и опубликовало эту надпись здесь
                +1
                Я тоже мерил: marow.net/archives/95

                В БЭМ кстати нет упоминаний про такую запись селекторов атрибутов!
                • НЛО прилетело и опубликовало эту надпись здесь
                    0
                    Сомнения — не аргумент.
                    • НЛО прилетело и опубликовало эту надпись здесь
                        0
                        Аналогично. Прежде утверждений о низкой эффективности селектора подтвердите свои слова ссылкой. В противном случае, нет ни одной причины отказываться от указанного метода.
                        • НЛО прилетело и опубликовало эту надпись здесь
                            +1
                            Какие? Какие аргументы? Ссылка на блог яндекса? Там и упоминаний то нет касательно темы нашего спора.

                            Для себя я давно решил, что при грамотном использовании ни универсальный селектор, ни селекторы атрибутов не несут никакого вреда. Всё остальное — домыслы и предрассудки.
                            • НЛО прилетело и опубликовало эту надпись здесь
                  0
                  То, что описано по вашей ссылке marow.net/archives/95 и запись div[class*=«embossed»] — это совершенно разные вещи. В вашей статье всё написано верно, но это никак не относится к данному селектору.

                  ИМХО этот селектор работает медленно, потому что по нему невозможно построить индекс. Этот запрос аналогичен запросу в MySQL LIKE '%embossed%'. Хотя я свято верю, что по классам индекс построен.

                  Простой спид-тест: выборка 1000*N раз сделать селектор div[class*=«embossed»] и div.embossed мне показывал разницу в три раза на небольшом DOM-дереве.

                  Для однократной отрисовки страницы это не страшно.
                  Однако если ваше js — приложение использует такие же селекторы — это уже может сказаться.

                  Вот.
          • НЛО прилетело и опубликовало эту надпись здесь
          +1
          Кратко, ясно, понятно.
            0
            Пункт «Красивые кнопочки» с текстом

            И стилями
            • CSS с тенями,
            • CSS с третьим эффектом

            Как-то немного диссонируют, поскольку Embossed это стиль визуализации, а Тени это стиль технической реализации.
            • НЛО прилетело и опубликовало эту надпись здесь
                0
                А как насчет кликабельности элементов под этой тенью?
                  0
                  ну если уж сильно захотеть… то можно как так попытаться, для всего что ниже лайтбокса
                  .layout {
                   position: relative;
                   z-index: -1;
                   }
                  

                  В хроме работает, возможно только в нем
                +1
                Было бы хорошо иметь еще ссылок на подобные кирпичики для проектов.
                  +1
                  Only Line Input порадовал — изящно.
                    +5
                    codrops, неужели это требует перевода (
                      +16
                      image

                      Никому не советую так выделять ссылки, только андерлайном. Пунктирной линией лучше обозначать текстовые кнопки, работающие на скриптах и не перекидывающие пользователей на другие страницы.
                        0
                        +, если уж на то пошло, то в CSS3 есть "text-decoration-style". Да и в других примерах код криво написан. К примеру, «Metro Styles». Там при клике (селектор ".metro.three-d:active") свойство «box-shadow» обретает знаечение «none», но при этом остальные свойства анимируются. В итоге получается некрасиво. В html5 приняли "#top" прописывать ссылки тем элементам, что должны вести вверх страницы, в примере же просто "#", да и то, зачем она там? Кликнул и отправился куда-то при том, что просто хотел эффект при клике глянуть… В общем, вроде как и статья начального уровня, так и примеры из той же серии… Чему люди-то после сего научатся?..
                        0
                        Статья хорошая, спасибо, но все-таки выскажусь. Я видел большое количество сайтов с качественными примерами, и все они говорили, что облегчают мой труд как верстальщика, но написать что-то используя css3 я могу и сам, от таких сайтов, обычно, я жду готовый реализаций для браузеров >IE7, так как именно на это я трачу огромное количество своего времени, именно этот код я не хочу писать ручками, а хочу скопировать.

                        Так и в этой статье. Я увижу элемент на макете и сверстаю его на css3, но потом мне напомнят про IE, и я буду ныть, но вяло верстать тоже самое, но другими способами.

                        Соглашусь с выше сказанным и повторю забудьте:
                        div[class*="embossed"]
                        • НЛО прилетело и опубликовало эту надпись здесь
                            –1
                            Видел, конечно же.

                            Использовать Bootstrap хорошо тогда, когда проект верстается с нуля. А если проект на поддержке или пришел ко мне от другого верстальщика?
                            • НЛО прилетело и опубликовало эту надпись здесь
                                0
                                Ребята не парятся, но это ребята.

                                Реалии таковы, что производительность влияет на показатель отказов.
                                  0
                                  Вы можете подтвердить своё высказывание о производительности?
                                    –2
                                    Вам выше дали ссылку на Яндекс.

                                    В каком виде вы хотите увидеть результаты?
                                      0
                                      Да простенько прям. Две странички. С указанным селектором и по классу. Элементов примерно 5000 — 10 000, что бы хоть какую-то разницу видеть. И время отрисовки страницы.
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                          +1
                                          Вы осознаёте что такое 10 000 элементов или хотя бы 5000? Это очень много. На странице обычно используется всего 2 — 3 кнопки. Скажем так, на фоне перегруженности разметки у большинства сайтов, селектор атрибутов — не самое узкое место. Однако этот приём задаёт некий неймспейс, провит которого очевиден и перевешивает все упомянутые ужасы.
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                              0
                                              На этой странице 3000 ВСЕХ элементов. Ни я, ни автор не призывает к использованию селекторов этого типа повсеместно, но только в управляющих элементах где они крайне уместны.
                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                  0
                                                  Что подразумевается под словом лень в данном контексте?
                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                      0
                                                      Совершенно ничего. Просто это другой подход к работе.
                              0
                              Bootstrap — комплексное решение.
                            +19
                            Ну все. Теперь синий квадрат с текстом — это ссылка в метро стиле.
                              0
                              Хотелось бы увидеть рекомендации на какие нибудь хорошие инструменты для удобной визуальной подготовки таких стилей.
                              Наверняка есть какие то простые он-лайн инструменты.
                              А то, когда создаешь подобные CSS-ки вручную, часто забываешь какие-нибудь тонкости, которые потом вылезают боком.
                                –1
                                Современные тенденции настораживают.

                                Сверстать блок шириной 50% с закруглёнными углами в 10 пикселей радиусом, белым цветом текста, красным фоном, синей рамкой в 20 пикселей:
                                <div class="width-50-percent round-corners corners-10 text-color-white background-color-red border-width-20 border-color-special">

                                Мне одному кажется, что здесь что-то не так? Помню, ещё совсем недавно за такое могли и по морде…
                                  0
                                  конечно, не то что раньше
                                    0
                                    Не нравится — не делайте.
                                    –1
                                    Кнопки классные, остальное — трэш.
                                      +2
                                      Вообще бы, было не плохо создать библиотеку с разбиением на стили (дизайны), чтобы моно было выбрать, например для своего дизайна (сайта) и не заморачиваться. Пришел, выбрал, скопипастил и ушел.

                                      Если такое уже реализованно — сорри.

                                      Если у кого-то возникнут мысли по реализации данного проекта — велком в личку, поддержу.

                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                      Самое читаемое