10 Лучших CSS сниппетов

Не смотря на свою простоту, с помощью CSS иногда довольно-таки сложно сделать какие-то определенные задачи. В этом примере рассмотрим 10 полезных примеров решения частых проблем

1. Вертикальное выравнивание

Выровнять элемент, блок или текст по центру блока или страницы - порой составляет трудную задачу.

Для решения этой проблемы существует вот такое решение:


.verticalcenter{
  position: relative;
  top: 50%;
  -webkit-transform: translateY(-50%);
  -o-transform: translateY(-50%);
  transform: translateY(-50%);
}

С помощью этого примера можно выровнять строку текста, абзац или любой блок по вертикали. CSS3 Трансформации работают в Chrome4, Opera 10, Safari 3, Firefox 3, и Internet Explorer 9.

Вытягивание элемента на всю ширину окна браузера

Иногда тербуется растяжение элмента по высоте на всю высоту окна браузера.

Для этого нужно всего указать высоту для html и body равную 100%, после этого нужному нам блоку указать высоту 100%


html,
body {
  height: 100%;
}
div {
  height: 100%;
}

Различное оформление для ссылок разных типов

Иногда необходимо установить разные стили для ссылок разных типов: например для ссылки - перехода на сайт, для ссылки типа mailto, для ссылки на документ.

Для каждого вида ссылок можно указать свои стили без присваивания им отдельных классов


a[href^="http://"]{
    padding-right: 20px;
    background: url(external.gif) no-repeat center right;
}
/* emails */
a[href^="mailto:"]{
    padding-right: 20px;
    background: url(email.png) no-repeat center right;
}
  
/* pdfs */
a[href$=".pdf"]{
    padding-right: 20px;
    background: url(pdf.png) no-repeat center right;
}

Сделать все изображения на сайте черно-белыми

Если ваш сайт подразумевает использование только черно-белых картинок, но вам не хочется обрабатывать отдельно каждое изображение - можно обойтись простым CSS свойством с использованием SVG фильтра



  
    
  

Чтобы данный пример был кроссбраузерным зададим ему нужные свойства:


img {
    filter: url(filters.svg#grayscale); /* Firefox 3.5+ */
    filter: gray; /* IE6-9 */
    -webkit-filter: grayscale(1); /* Google Chrome, Safari 6+ & Opera 15+ */
}

Таким образом все картинки станут на сайте черно-белыми

Анимация градиента

анимации в CSS3 имеют широкие возможности, с их помощью можно анимировать все что угодно, кроме ... Градиентов

Но в данном случае можно обойтись таким хаком: Анимировать не сам градиент а его позицию


button {
  background-image: linear-gradient(#5187c4, #1c2f45);
  background-size: auto 200%;
  background-position: 0 100%;
  transition: background-position 0.5s;
} 
button:hover {
  background-position: 0 0;
}

Таким образом изменение позиции background будет выглядеть как анимация

See the Pen Gradient background Animation by Yurij Rightblog.ru (@rightblog) on CodePen.

Автоматическая ширина таблицы по контенту

Таблицы в html довольно-таки сложно поддаются кастомизации из-за повторяющихся тегов tr и td. Очень часто встречается проблема сворачивания текста

Чтобы избавится от этой проблемы - можно задать для тега td свойство: white-space: nowrap;


td {
    white-space: nowrap;
}

See the Pen CSS Table Column Autowidth by Yurij Rightblog.ru (@rightblog) on CodePen.

Тень box-shadow только с одной стороны

Эта проблема встречается очень часто, ее конечно можно решить сдвигом тени в одну сторонуи бОльшим размытием, но тень все равно будет видна со всех сторон

Для решения данной проблемы нужно будет обратится к псевдо элементу after со следующими свойствами


.box-shadow {
    background-color:#FF8020;
    width: 160px;
    height: 90px;
    margin-top: -45px;
    margin-left: -80px;
    position: absolute;
    top: 50%;
    left: 50%;
}
.box-shadow:after {
    content: "";
    width: 150px;
    height: 1px;
    margin-top: 88px;
    margin-left: -75px;
    display: block;
    position: absolute;
    left: 50%;
    z-index: -1;
    -webkit-box-shadow: 0px 0px 8px 2px#000000;
       -moz-box-shadow: 0px 0px 8px 2px#000000;
            box-shadow: 0px 0px 8px 2px#000000;
}

See the Pen Box Shadow on One Side by Yurij Rightblog.ru (@rightblog) on CodePen.

Обертка текста в блок меньшего по ширине чем текст

Если мы имеем блок шириной 200px и нам нужно вписать туда длинный текст, то текст вылезет вправо за пределы блока (особенно это касается ссылок, т.к. они не имеют пробелов)


div {
  white-space: pre-line;
  word-wrap: break-word;
}

Таким образом мы принудительно переносим текст на новую строку не только по пробелу

Blur для текста

Для эффекта размытия в css существует фильтр blur но он не применим для текста. Эффект размытия текста можно сделать с помощью text-shadow. В тоже время тексту нужно задать полную прозрачность


.blurry-text {
   color: transparent;
   text-shadow: 0 0 5px rgba(0,0,0,0.5);
}

Анимированное многоточие с помощтю css3 анимации

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


.loading:after {
    overflow: hidden;
    display: inline-block;
    vertical-align: bottom;
    animation: ellipsis 2s infinite;
    content: "\2026"; /* ascii code for the ellipsis character */
}
@keyframes ellipsis {
    from {
        width: 2px;
    }
    to {
        width: 15px;
    }
}

See the Pen Animating Ellipsis Using CSS by Yurij Rightblog.ru (@rightblog) on CodePen.

Смотрите также

10 Лучших CSS сниппетов
Большая подборка качественных HTML шаблонов
Битрикс: Поиск по свойствам торговых предложений

Группа Вконтакте