Рассмотрим подробно свойство clip

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

Назначение свойства clip - определять, какую часть элемента нужно выводить. Вы наверняка слышали о таком эффекте под названием "обрезка" (по-английски "crop"). Существует достаточно много плагинов JavaScript для обрезания элемента, но в действительности можно делать то же самое с помощью свойства CSS clip . Конечно, с некоторыми ограничениями. Мы рассмотрим их несколько позже.

 

Синтаксис

Начнем с разбора синтаксиса свойства clip , который может показаться на первый взгляд сложным для понимания. Посмотрим на следующий пример:

.my-element {
    position: absolute;
    clip: rect(110px, 160px, 170px, 60px);
}

Первое, что нужно запомнить: свойство clip работает только для элементов со свойствами  position: absolute или position: fixed. Оно не действует при относительном или статичном позиционировании.

Разумных объяснений данному факту не нашлось на просторах Интернет.

Однако, все еще можно сделать несколько интересных экспериментов со свойством clip и найти отличные способы его применения.

Рассмотрим синтаксис детально.

Свойство clip может иметь три различных значения:

  • auto: устанавливается по умолчанию. Установка данного значения эквивалентна отказу от использования свойства clip.
  • inherit: наследование значения свойства clip от родительского элемента.
  • функция формы. В текущий момент доступна только функция rect().
clip: { shape | auto | inherit } ;

В большинстве случаев вы захотите использовать функцию формы. Может быть наступят дни, когда мы сможем использовать не только функцию rect() для задания формы (например, circle()), но сегодня наши возможности ограничены только прямоугольником. Но не стоит беспокоиться - данной функции достаточно для получения интересных эффектов.

 

Функция rect()

Теперь разберемся с синтаксисом функции rect(). он требует 4 значения, разделенных запятой: top (верх), right (право), bottom (низ) и left (лево). Как для отступов или полей свойство указываются по часовой стрелке.

clip: rect(<top>, <right>, <bottom>, <left>);

Теперь нужно сосредоточить внимание, так как есть небольшая хитрость. Значения top(верх) и bottom(низ) определяют смещение от верхней границы, а left(лево) и right(право) определяют смещение от левой границы.

Рассмотрим небольшой пример:

clip: rect(40px, 260px, 150px, 80px);

Данный код означает, что мы берем часть элемента между 40px и 150px по вертикали и между  80px и 260px по горизонтали. На следующем рисунке показан принцип.

Как только вы разберетесь с принципом работы функции rect(), использование свойства clip станет простым для вас.

Теперь небольшой вопрос для закрепления материала.  Допустим, у нас есть элемент  400px по ширине и 200px по высоте. Нужно удалить 50px справа, 10px сверху и30px снизу. Какое из ниже приведенных описаний нужно использовать?

    clip: rect(50px, 30px, 350px, 70px);
    clip: rect(0, 10px, 30px, 50px);
    clip: rect(10px, 50px, 30px, 0);
    clip: rect(50px, 30px, 10px, 10px);
    clip: rect(10px, 350px, 170px, 0);

 

Дополнительные возможности

Мы рассмотрели базовые установки свойства clip. Но есть несколько моментов, про которые следует знать.

Во-первых, функция rect() принимает auto в качестве значения любого параметра. Оно означает “100%”. Например, есть элемент размером 100px на 100px и нам нужно выводить его полностью. Можно воспользоваться значением rect(0, 100px, 100px, 0) или rect(0, auto, auto, 0).

Во-вторых, так как функция rect() использует значение длины для  каждого параметра, то они могут анимироваться с помощью трансформаций или переходов CSS. Такой подход открывает отличную возможность для создания впечатляющих эффектов. Конечно, анимировать auto неп олучится, так как оно не является целым типом.

В-третьих, процентные значения для функции  rect() не поддерживаются. Плохая новость, так как создание адаптивных эффектов осложняется.

 

Поддержка в браузерах

Множество замечательных возможностей разбивалось вдребезги о риф плохой поддержки в браузерах. Но вы будете удивлены, посмотрев на список с указанием версий, в которых действует свойство clip:

  • Chrome  >1.0
  • FireFox  >1.0
  • Opera  >7.0
  • Safari  >1.0
  • IE >4.0 (а с версии 8.0 поддерживается синтаксис с запятой)

Да, вы не ошиблись - Internet Explorer версии 4.0. Но для версий до 8.0 нужно использовать синтаксис с разделением значений пробелом, а не запятой.

.my-element {
    position: absolute;
    clip: rect(10px  350px  170px  0); /* IE4 to IE7 */
    clip: rect(10px, 350px, 170px, 0); /* IE8+ & other browsers */
}

 

Демонстрация

Для более наглядного представления мы подготовили пару примеров.

В первом примере используем:

  • Свойство clip
  • Переходы CSS
  • Селектор ~ или +

Сначала изображение скрыто с помощью обрезки. Затем, при наведении курсора мыши на кнопку  изображение разворачивается за  0.5с от центра.

<iframe style="width: 100%; height: 350px"
      src="http://jsfiddle.net/zNcTR/4/embedded/result,html,css,js"></iframe>

Эффектно? Второй пример показывает более реалистичное применение свойства clip вместе с другими селекторами и переходами.

В следующем уроке мы сделаем вполне реальное приложение с использованием свойства clip.

Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/fP44FQM28-Q/lessons.php

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

Рассмотрим подробно свойство clip | | 2013-01-27 13:40:02 | | Статьи Web-мастеру | | В данном уроке мы разберемся с редко используемым и плохо понимаемым свойством CSS clip, а также рассмотрим, как с его помощью получать замечательные эффекты.Назначение свойства clip - определять, | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: