overflow — CSS | MDN
Свойство CSS overflow
определяет, необходимо ли для переполненного блочного элемента содержимое обрезать, предоставить полосы прокрутки или просто отобразить.
Использование свойства overflow
со значениями, отличными от visible
, (значение, принятое по умолчанию), создаёт новый блочный контекст форматирования. Это технически необходимо, поскольку если бы float пересекался с элементом прокрутки, это потребовало бы обеспечить обтекание содержимого прокручиваемого элемента вокруг вторгающихся float’ов. Обтекание при этом было бы необходимо производить после каждого шага прокрутки заново, что привело бы к заметному замедлению прокрутки. Обратите внимание, что при программной установке атрибута scrollTop
для соответствующего HTML-элемента, даже если overflow
имеет значение hidden
, элемент, возможно, придется прокрутить.
Значения
visible
- По умолчанию.
Содержимое не обрезается, может отображаться снаружи блока, в котором оно расположено.
hidden
- Контет обрезается, без предоставления прокрутки.
scroll
- Содержимое обрезается и браузер использует элементы прокрутки, не важно было ли обрезано содержимое или нет. Это избегает многих проблем касательно появления прокруток и их исчезновения в динамичной среде. Принтеры могу печатать переполненное содержимое.
auto
- Зависит от агента пользователя. Браузеры такие как Firefox предоставляют прокрутку, если содержимое переполняет блок.
Расширения Mozilla
-moz-scrollbars-none
- Используйте
overflow:hidden
. -moz-scrollbars-horizontal
- Использование
overflow-x
иoverflow-y
предпочтительнее. -moz-scrollbars-vertical
- Использование
overflow-x
иoverflow-y
предпочтительнее. - -moz-hidden-unscrollable
- Главным образом предназначен для внутреннего использования и для тем. Отключает прокрутку XML root элементов и
<html>
,<body>
клавишами со стрелками и колесом мыши.
p {
width: 12em;
height: 6em;
border: dotted;
overflow: visible;
}
visible
(default)
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
p { overflow: hidden; /* полосы прокрутки не предоставляются */ }
overflow: hidden
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
p { overflow: scroll; /* всегда показывать полосы прокрутки */ }
overflow: scroll
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
p { overflow: auto; /* добавить полосы прокрутки, если это необходимо */ }
overflow: auto
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
BCD tables only load in the browser
Firefox (Gecko) Примечания
Из-за Firefox 3.6 (Gecko 1.9.2), свойство overflow неверно применяется к элементам
table-group (<thead>
, <tbody>
,
). Это поведение будет исправлено в следующих версиях.
Internet Explorer Примечания
Internet Explorer 4 — 6 увеличивает элемент с overflow:visible
(значение по умолчанию), чтобы заполнить содержимое в нём. height/width
действуют подобно min-height/min-width
.
Устраняем проблему «Googlebot не может получить доступ к файлам CSS и JS на сайте» — инструкция
Несколько дней назад, очень большое количество сайтов получили письмо в панели Google Search Console (Google Webmasters) со следующей проблемой: «Googlebot не может получить доступ к файлам CSS и JS на сайте …» (англ. «Googlebot cannot access CSS and JS files on …»).
Поскольку Google пишет, что сайт может потерять позиции, при условии дальнейшей блокировки этих ресурсов сайта, то необходимо прислушаться к этой рекомендации и открыть все запрашиваемые для индексации файлы для поискового робота Google.
Кроме этого, про эту проблему четко написано в справке Google https://support.google.com/webmasters/answer/35769?hl=ru#technical_guidelines
Поэтому, давайте рассмотрим детальную инструкцию как устранить данную проблему.
1. Определяем какие ресурсы нужно открыть для индексации
Для выполнение данного пункта мы заходим в Google Search Console https://www.google.com/webmasters/tools/home?hl=ru и выбираем нужный сайт.
После этого, нажимаем на вкладку «Сканирование» и «Посмотреть как Googlebot»
и нажимаем «ПОЛУЧИТЬ И ОТОБРАЗИТЬ»
И переходим на последнюю строчку с результатами сканирования
В результате мы получаем:
— отображение того как сейчас видит поисковый робот Google и как эту же страницу увидят пользователи сайта
— список ресурсов с причиной по которой Googlebot не может получить доступ и, соответственно, которые нужно открыть для индексации:
2. Получаем строки для добавления в свой robots.

Копируем полученную таблицу, вставляем (с использованием функции вставки без форматирования) данную таблицу в Excel и делаем сортировку по колонке с URL.
Через «Найти и заменить» удаляем домен из URL и выделяем уникальные папки (или в некоторых случаях папку + определенный тип файлов), которые необходимо открыть для индексации.
Через данную функции добавляем разрешающую команду индексации =CONCATENATE(«Allow: «;A2) (или =СЦЕПИТЬ(«Allow: «;A2) ) и, в итоге, получаем строки которые нужно добавить в роботс:
3. Проверяем свой роботс.тхт с обновленными инструкциями
Перед заливкой нового robots.txt нужно проверить созданные инструкции на ошибки и все ли файлы мы открыли. Для этого лучше всего воспользоваться сервисом проверки роботса от Яндекса https://webmaster.yandex.ua/robots.xml, так как там сразу можно указать список адресов, которые нужно проверить:
Если вы всё правильно сделали, то получите уведомление, что все нужные ресурсы открыть для индексации:
Если все нормально, то обновляем свой файл на сервере.
4. Повторяем итерации 1-3, пока есть заблокированные ресурсы
Как оказалось, Google сразу отображает НЕ ВСЕ ресурсы которые нужно открыть для индексации.
При повторной проверке, мы можем получить такую картину:
Где видим, что для индексации нужно открыть еще и изображения. Поэтому, повторяем пункты 2. и 3. для новых ресурсов.
В итоге, мы должны получить нормальное отображение сайта для Googlebot’а:
Единственный нюанс, что в списке ресурсов могут оказаться файлы к которым Гугл не может получить доступ:
5. Проверяем доступность всех ресурсов для Mobile: smartphone
После этого, также делаем проверку на доступность всех ресурсов и для Mobile: smartphone – робота: для этого при проверке выбираем соответствующее значение и нажимаем «Получить и отобразить».
На данном сайте и для мобильного бота все ресурсы оказались доступны, поэтому, дополнительных действий не нужно было проводить.
Примеры что нужно добавить для стандартных движков:
WordPress
Allow: /wp-content/themes/*. css
Allow: /wp-content/plugins/*.css
Allow: /wp-content/uploads/*.css
Allow: /wp-content/themes/*.js
Allow: /wp-content/plugins/*.js
Allow: /wp-content/uploads/*.js
Allow: /wp-includes/css/
Allow: /wp-includes/js/
Allow: /wp-includes/images/
Универсальное решение для всех CMS
Allow: /*.js
Allow: /*.css
Allow: /*.jpg
Allow: /*.gif
Allow: /*.png
Joomla
Allow: /templates/*.css
Allow: /templates/*.js
Allow: /components/*.css
Allow: /components/*.js
Allow: /media/*.js
Allow: /media/*.css
Allow: /plugins/*.css
Allow: /plugins/*.js
DLE
Allow: /engine/classes/*.css
Allow: /engine/classes/*.js
Allow: /templates/Название шаблона/style/*.css
Allow: /templates/Название шаблона/js/*.js
Заключение
В данной статье мы постарались максимально подробно расписать как исправить ошибку «Googlebot не может получить доступ к файлам CSS и JS на сайте …».
Поэтому, если вы получили данное уведомление от Google, рекомендуем прислушаться к этим рекомендациям и открыть необходимые файлы для индексации.
PS: Если у вас возникли трудности, то задавайте в комментариях будем помогать с решением уникальных проблем.
Оцените статью
Загрузка…Настраиваем зрение Googlebot для CSS и JS: основные ошибки — Новые технологии
С 21 апреля поисковый гигант Google запустил поисковый алгоритм MobileGeddon (Мобильный армагедон), который должен уделять особое внимание сайтам имеющим версию для мобильных устройств.
Алгоритм должен анализировать страницы сайта на предмет их оптимизации для просмотра на мобильных гаджетах. В результате функционирования алгоритма в поисковой выдаче Google, на более высоких местах будут находиться дружественные для мобильного просмотра сайты. Это правило будет работать только для поиска с мобильного устройства.
Для желающих настроить свои сайты Google открыла специальную информационную страницу — Сайты для мобильных
Однако проверяя оптимизацию сайта через форму Проверка удобства просмотра на мобильных устройствах можно столкунуться с рядом ошибок.
Некоторые ресурсы страницы (N) заблокированы в файле robots.txt.
1. Googlebot не может получить доступ к файлам стиля с расширением .CSS
Для того, чтобы исправить данную ситуацию необходимо отредактировать файл Robots.txt добавив
Allow: /*.css$ (если файлы не кэшируются)
Allow: /*.css?*$ (если файлы кэшируются)
2. Googlebot не может получить доступ к файлам JavaScript c расширением .JS
В Robots.txt добавляем:
Allow: /*.js$ (если файлы не кэшируются)
Allow: /*.js?*$ (если файлы кэшируются)
3. Googlebot не может получить доступ к графическим файлам c расширением .jpg и .png
Если файлы не кэшируются:
Allow: /*.jpg?*$
Allow: /*.png?*$
Если файлы кэшируются:
Allow: /*. jpg?*$
Allow: /*.png?*$
В конечном виде Ваш Robots.txt должен добавиться следующими строками:
User-agent: *
Allow: /*.css?*$
Allow: /*.js?*$
Allow: /*.jpg?*$
Allow: /*.png?*$
В проверка сайта на дружественность к пользователям сайта открытого с мобильного устройства должна показать фразу:
Отлично! Страница оптимизирована для мобильных устройств.
overflow — CSS: Cascading Style Sheets
Это свойство является сокращением для следующих свойств CSS:
перелив: видимый;
переполнение: скрыто;
перелив: зажим;
переполнение: прокрутка;
перелив: авто;
переполнение: скрыто видимым;
переполнение: наследование;
перелив: начальный;
переполнение: не установлено;
Свойство overflow
определяется как одно или два ключевых слова, выбранных из списка значений ниже. Если указаны два ключевых слова, первое применяется к overflow-x
, а второе — к overflow-y
. В противном случае для
overflow-x
и overflow-y
устанавливается одно и то же значение.
Значения
-
видимые
- Содержимое не обрезается и может отображаться за пределами поля заполнения.
-
скрыто
- Содержимое при необходимости обрезается по размеру набивки. Полосы прокрутки не предусмотрены, и поддержка, позволяющая пользователю выполнять прокрутку (например, перетаскивая или используя колесо прокрутки), не разрешена. Контент можно прокручивать программно (например, путем установки значения свойства, такого как
offsetLeft
), так что элемент по-прежнему является контейнером прокрутки. -
зажим
- Как и для
, скрытого
, содержимое обрезается до поля заполнения элемента. Разница междуclip
иhidden
заключается в том, что ключевое словоclip
также запрещает любую прокрутку, включая программную.Поле не является контейнером прокрутки и не запускает новый контекст форматирования. Если вы хотите запустить новый контекст форматирования, вы можете использовать
display: flow-root
для этого. -
свиток
- Содержимое при необходимости обрезается по размеру набивки.Браузеры всегда отображают полосы прокрутки независимо от того, обрезано ли какое-либо содержимое, что предотвращает появление или исчезновение полос прокрутки при изменении содержимого. Принтеры по-прежнему могут печатать переполненное содержимое.
-
авто
- Зависит от пользовательского агента. Если содержимое помещается внутри поля заполнения, оно выглядит так же, как
visible
, но все же устанавливает новый контекст форматирования блока. Настольные браузеры предоставляют полосы прокрутки при переполнении содержимого. -
overlay
Этот устаревший API больше не должен использоваться, но, вероятно, будет работать. - Действует так же, как
auto
, но полосы прокрутки отображаются поверх содержимого, а не занимают место. Поддерживается только в браузерах на основе WebKit (например, Safari) и Blink (например, Chrome или Opera).
Расширения Mozilla
-
-moz-scrollbars-none
Это устаревший API, работа которого больше не гарантируется. [1] - Используйте вместо этого
overflow: hidden
. -
-moz-scrollbars-horizontal
Этот устаревший API больше не должен использоваться, но, вероятно, будет работать.[1] - Используйте
overflow-x
: scrolloverflow-y
: hiddenoverflow: hidden scroll
вместо этого. -
-moz-scrollbars-vertical
Этот устаревший API больше не должен использоваться, но, вероятно, будет работать. [1] - Используйте
overflow-x
: скрытыеoverflow-y
: прокрутитеoverflow: прокрутите скрытые
вместо этого. -
-moz-hidden-unscrollable
Это устаревший API, работа которого больше не гарантируется. - Используйте переполнение
: вместо этого используйте зажим
.
[1] Начиная с Firefox 63, эта функция находится за настройкой параметров функции. В about: config установите layout.css.overflow.moz-scrollbars.enabled от
до true
Параметры переполнения включают обрезку, отображение полос прокрутки или отображение содержимого, вытекающего из контейнера в окружающую область.
Указание значения, отличного от visible
(по умолчанию) создает новый контекст форматирования блока.Это необходимо по техническим причинам — если поплавок пересекается с элементом прокрутки, он принудительно перематывает содержимое после каждого шага прокрутки, что приводит к медленной прокрутке.
Чтобы overflow
имел эффект, контейнер уровня блока должен иметь либо заданную высоту ( height
или max-height
), либо white-space
, установленное на nowrap
.
Установка одной оси на видимых
(по умолчанию) при установке другой на другое значение приводит к видимым
как авто
.
Свойство JavaScript Element.scrollTop
можно использовать для прокрутки элемента HTML, даже если переполнение
установлено на скрыто
.
[видимые | скрытый | зажим | свиток | авто] {1,2}
Установка различных значений переполнения для текста
p {
ширина: 12em;
высота: 6em;
граница: пунктирная;
перелив: видимый;
}
видимый
(по умолчанию)
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
п {переполнение: скрыто; }
переполнение: скрыто
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
п {overflow: scroll; }
overflow: scroll
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
п {перелив: авто; }
overflow: auto
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
Таблицы BCD загружаются только в браузере
overflow | CSS-уловки
Свойство overflow
управляет тем, что происходит с контентом, выходящим за его границы: представьте себе div
, в котором вы явно установили ширину 200 пикселей, но содержит изображение шириной 300 пикселей. Это изображение будет выступать из div и по умолчанию будет видимым
. Если вы установите значение overflow
на hidden
, изображение будет обрезано на 200 пикселей.
div {
переполнение: видимое | скрытый | свиток | авто | наследовать
}
Посмотреть демо
Значения
-
visible
: содержимое не обрезается, когда оно выходит за пределы своего поля. Это значение свойства по умолчанию. -
скрыто
: переполненное содержимое будет скрыто. -
scroll
: аналогично скрытому, за исключением того, что пользователи смогут прокручивать скрытое содержимое -
auto
: если контент выходит за пределы своего поля, то этот контент будет скрыт, в то время как полоса прокрутки должна быть видна для пользователей, чтобы прочитать остальной контент. -
начальный
: используется значение по умолчанию:видимый
-
наследовать
: устанавливает переполнение равным значению его родительского элемента.

Помните, что текст будет естественным образом переноситься в конец элемента (если не изменить пробел), поэтому текст редко будет причиной переполнения. Если высота не задана, текст также просто подтолкнет элемент выше. Переполнение чаще возникает, когда заданы явные значения ширины и высоты, и нежелательно, чтобы какой-либо контент выплеснулся наружу, или когда прокрутка явно избегается.
видимый
Если вы вообще не устанавливаете свойство переполнения, значение по умолчанию отображается. Таким образом, в общем случае нет причин явно устанавливать это свойство как видимое, если вы не отменяете его установку в другом месте.
Здесь важно помнить, что, даже если контент виден за пределами поля, это содержимое не влияет на поток страницы. Например:
Как правило, вам все равно не следует устанавливать статическую высоту для блоков с веб-текстом, поэтому они не должны появляться.
Скрытый
Противоположность отображаемому по умолчанию: скрыто . Это буквально скрывает любой контент, выходящий за пределы рамки.
Это особенно полезно при использовании динамического содержимого и возможности переполнения, вызывающего серьезные проблемы с разметкой. Однако имейте в виду, что скрытый таким образом контент полностью недоступен (за исключением просмотра источника). Так, например, у пользователя установлен размер шрифта по умолчанию больше, чем вы ожидаете, вы можете выталкивать текст за пределы поля и полностью скрывать его от их представления.
Свиток
Установка значения переполнения поля для прокрутки скроет содержимое от рендеринга за пределами поля, но предложит полосы прокрутки для прокрутки внутренней части поля для просмотра содержимого.
Следует отметить, что с этим значением вы получаете ОБЕ горизонтальные и вертикальные полосы прокрутки независимо от того, что, даже если для содержимого требуется только одна или другая.
Прокрутка импульса iOS может быть включена для этого значения с помощью -webkit-overflow-scrolling
.
Примечание: В OS X Lion, когда полосы прокрутки настроены на отображение только при использовании, scroll
ведет себя больше как auto
, в котором отображаются только необходимые полосы прокрутки.
Авто
Автоматическое переполнение очень похоже на значение прокрутки, только оно решает проблему получения полос прокрутки, когда они вам не нужны. Полосы прокрутки будут отображаться только в том случае, если есть контент, который действительно выходит за пределы элемента.
переполнение-x и переполнение-y
Также можно управлять переполнением содержимого по горизонтали или вертикали с помощью свойств overflow-x
и overflow-y
.Например, в демонстрации ниже горизонтальное переполнение можно прокручивать, в то время как текст, выходящий за пределы высоты поля, скрыт:
.box {
переполнение-y: скрыто;
переполнение-x: прокрутка;
}
См. Pen 5ff94380c4edf4d0b1409504ed1f3315 от CSS-Tricks (@ css-tricks) на CodePen.
Очистка поплавка
Как ни странно, одним из наиболее популярных способов использования настройки переполнения является очистка числа с плавающей запятой. Настройка переполнения не сбрасывает поплавок в элементе , а само очищает .Это означает, что элемент с переполнением (любое значение, кроме , видимого
) будет расширяться настолько, насколько это необходимо, чтобы охватить дочерние элементы внутри, которые перемещаются (вместо сворачивания), при условии, что высота не объявлена. Как это:
Лучшим методом очистки поплавка является clearfix, поскольку он не требует, чтобы вы изменяли свойство переполнения так, как вам не нужно.
Создание контекста форматирования блока
Интересно отметить, что переполнение
также создаст новый контекст форматирования блока, который полезен, если мы хотим выровнять элемент блока рядом с плавающим.В приведенном ниже примере мы показываем, как несколько абзацев будут взаимодействовать с плавающим изображением по умолчанию, а затем мы используем overflow: hidden
для выравнивания текста в его собственном поле:
См. Контекст блока «Создание пера с переполнением: скрыто Робином Рендлом» (@robinrendle) на CodePen.
Это взято из замечательного поста Николь Салливан, который вдохновил медиа-объект.
Можно ли стилизовать полосы прокрутки с помощью CSS?
Раньше вы могли стилизовать полосы прокрутки в IE (v5. 5?), Но не более того. Теперь вы можете снова стилизовать их в браузерах WebKit. Если вам нужны настраиваемые полосы прокрутки в разных браузерах, обратите внимание на JavaScript.
Если к элементу необходимо добавить полосы прокрутки для соблюдения значения переполнения, Firefox помещает их за пределы элемента, сохраняя видимую ширину / высоту, как заявлено. IE помещает полосы прокрутки внутрь, сохраняя заявленную общую ширину / высоту.
Демо
Демоверсии для этой статьи взяты с этой страницы-примера.
Поддержка браузера
Настольный компьютер
Chrome | Firefox | IE | Edge | Safari |
---|---|---|---|---|
91 | 87 | 11 | 88 | |
Android Chrome | Android Firefox | Android | iOS Safari | |
88 | 83 | 81 | 14.![]() |
Связанные
Дополнительная информация
указателей-событий | CSS-уловки
Свойство pointer-events
позволяет управлять тем, как элементы HTML реагируют на события мыши / касания, включая CSS-состояния наведения / активного состояния, события щелчка / касания в Javascript, а также видимость курсора.
.avoid-clicks {
указатель-события: нет;
}
Хотя свойство pointer-events
принимает одиннадцать возможных значений, все, кроме трех, зарезервированы для использования с SVG.Три действительных значения для любого элемента HTMl:
-
нет
запрещает все параметры щелчка, состояния и курсора в указанном элементе HTML -
auto
восстанавливает функциональность по умолчанию (полезно для использования с дочерними элементами элемента суказателями-событиями: нет;
указано -
inherit
будет использовать значениеpointer-events
родительского элемента
Оцените эту ручку!
Как показано выше, основной вариант использования событий указателя
— разрешить поведение щелчка или касания «пройти через» элемент к другому элементу под ним по оси Z. Например, это может быть полезно для графических наложений или скрытия элементов с непрозрачностью
и
(например, всплывающих подсказок) и по-прежнему позволяет выделять текст для содержимого под ним.
Достопримечательности
- «Использование событий указателя в CSS для не-SVG элементов является экспериментальным. Раньше эта функция была частью черновика спецификации пользовательского интерфейса CSS3, но из-за множества открытых проблем была перенесена на CSS4 ». — Mozilla MDN
- «Если вы добавляете прослушиватель событий щелчка к элементу, а затем удаляете стиль событий указателя (или меняете его значение на auto, событие щелчка запускает назначенную функцию.По сути, событие щелчка учитывает значение события указателя ». — Дэвид Уолш
Другие ресурсы
Поддержка браузера
Настольный компьютер
Chrome | Firefox | IE | Edge | Safari |
---|---|---|---|---|
4 | 3,6 | 11 | 12 | 4 |
Android Chrome | Android Firefox | Android | iOS Safari | |
88 | 83 | 2.![]() | 3,2 |
Поддержка немного глубже в некоторых браузерах при использовании в
, например, IE 9 поддерживает это.
Понимание идентификатора и класса в CSS
Обзор
До сих пор вы добавляли стиль к различным элементам на странице портфолио, но добавленные стили повлияли на всех элементов определенного типа. Например, когда вы добавили стиль к элементу div, это одинаково повлияло на все элементы div.Что, если вы хотите стилизовать некоторые элементы div одним способом, а другие элементы div — другим? Вот где на помощь приходят id и class. В этом уроке вы узнаете, как атрибуты ID и Class могут использоваться для стилизации отдельных элементов (id) или групп элементов (class).
Результаты учащихся
По завершении этого упражнения:
- вы сможете определить, как атрибуты ID используются в CSS для включения стилизации отдельных элементов.
- , вы сможете определить, как атрибуты класса используются в CSS для включения стилизации групп элементов.
- , вы должны добавить атрибуты ID и Class к определенным элементам на веб-странице.
Что такое id?
В HTML каждому элементу на вашей веб-странице может быть присвоен уникальный атрибут id. Это может быть любой текст, который вам нравится, но он должен быть уникальным (эта метка может быть только у одного элемента). Рекомендуется назначать метки, описывающие функцию элемента. Например,
- , который используется для разметки меню навигации, может иметь или
- Вы хотите стилизовать этот элемент иначе, чем другие элементы того же типа.
- Вы хотите иметь возможность ссылаться на определенный элемент на веб-странице. Фактически, вы уже добавляли один из элементов div на странице портфолио, когда создавали ссылку «перейти к основному содержанию» в уроке о специальных типах ссылок.
- Вы хотите иметь прямой доступ к этому элементу с помощью Javascript. Вы узнаете больше об этом в модуле Javascript.
Вы назначаете атрибут id элементу HTML, когда:
В этом модуле нас просто интересует первая причина для добавления идентификатора. Мы хотим иметь возможность стилизовать определенные элементы с помощью CSS.Например, предположим, что у вас есть абзац, который служит предупреждением на странице. Вы же не хотите, чтобы он выглядел, как все остальные абзацы на странице. Вы хотите, чтобы он выделялся, чтобы люди его обязательно заметили. Вы можете добавить к этому абзацу, например:
Важно! Сегодня все занятия отменены.
Чтобы добавить стиль к элементу с идентификатором, вы ставите перед идентификатором символ # в CSS. Например, вот как мы можем сделать так, чтобы наш абзац предупреждения отображался в большом желтом поле с черной рамкой и большим черным текстом:
p # alert { черный цвет; font-weight: жирный; фон: # FFFF66; /* желтый */ граница: сплошной черный цвет 2px; отступ: 1em; }
Обратите внимание, что указание типа элемента в CSS необязательно, если у элемента есть идентификатор.В приведенном выше примере мы используем «p # alert» в качестве селектора, который сообщает браузеру, что следующий стиль применяется к абзацу с идентификатором «alert». Однако, поскольку нет другого элемента — абзаца или другого — с таким же идентификатором, мы могли бы так же легко использовать «#alert», как наш селектор, без «p», например:
#тревога { черный цвет; font-weight: жирный; фон: # FFFF66; /* желтый */ граница: сплошной черный цвет 2px; отступ: 1em; }
Обычно рекомендуется включать элемент, потому что это помогает вам запомнить, какие элементы имеют определенные идентификаторы.Иногда вы захотите узнать это, просто взглянув на файл CSS, без необходимости возвращаться к исходному файлу HTML.
Что такое класс?
Иногда может быть группа элементов, которую вы хотите стилизовать определенным образом. Например, предположим, что вы создаете развлекательную веб-страницу, которая включает в себя несколько обзоров фильмов в дополнение к другому контенту. Все содержание каждого обзора (заголовок с названием фильма плюс несколько абзацев) заключено в
Крестный отец
Крестный отец (1972) - величайший фильм всех времен, согласно многочисленным опросам кинокритиков и зрителей.
Крестный отец ... (ваш отзыв здесь)
Аватар
«Аватар» (2009 г.) - самый кассовый фильм всех времен. зарабатывая примерно 2 доллара.8 млрд.
Аватар ... (ваш отзыв здесь)
Чтобы добавить стиль ко всем элементам, которые являются частью определенного класса, вы ставите перед именем класса точку (.) в вашем CSS. Например, вот как мы могли бы добавить бледно-синий фон и темно-синюю рамку ко всем обзорам фильмов и добавить курсив ко всем абзацам сводки:
div.review { цвет фона: # E6EBF5; /* бледно-синий */ граница: 1px solid # 003399; /* темно-синий */ } п.резюме { стиль шрифта: курсив; }
Селекторы потомков
Помимо назначения стилей классу элементов , вы также можете назначить стили потомкам этих элементов. Потомок — это элемент, который вложен в другой элемент .
В качестве примера предположим, что вы хотите, чтобы все элементы (ссылки) на странице были красными и подчеркнутыми. Вот как этого добиться в CSS:
a { красный цвет; текст-оформление: подчеркивание; }
Однако предположим, что вам нужен другой стиль для ссылок, которые являются частью вашего меню навигации.Вы хотите, чтобы это был белый текст на темно-синем фоне без подчеркивания. Предполагая, что эти ссылки содержатся в элементе
nav a { цвет белый; цвет фона: # 003399; /* темно-синий */ текстовое оформление: нет; }
В приведенном выше примере селектор nav сообщает браузеру применить определение стиля к каждому элементу , находящемуся внутри элемента
В примере с обзором фильма предположим, что большинство абзацев на вашей развлекательной странице имеют отступы, равные 1em. Однако вы хотите уменьшить это заполнение до 0,75em для всех абзацев, составляющих обзоры фильмов, чтобы обзоры выглядели немного теснее. Поскольку обзоры фильмов заключены внутри элемента
div.review p { заполнение: 0,75 мкм; }
Действия
- Откройте индекс вашего портфеля.html в текстовом редакторе.
- Просмотрите содержимое своей страницы. Он должен содержать один или несколько из следующих элементов:
-
- <основной>
- Обратите внимание на количество элементов
. Каждый из них в настоящее время имеет одинаковый стиль.Какие из них вы бы хотели стилизовать по-другому? Когда вы думаете об этом, рассмотрите функцию каждого div:- Первый div — это контейнер для ссылки перехода к основному содержанию .
- Второй div — это контейнер для вашей контактной информации.
- Третий блок — это контейнер для информации о вашем курсе и школе.
- Первый div уникален.Он функционально отличается от всех других div, и вы, вероятно, захотите, чтобы он был стилизован иначе. Следовательно, он должен иметь уникальный идентификатор. Назначьте первому div. ПРИМЕЧАНИЕ. Этот div также отображается на других страницах вашего портфолио, поэтому вам нужно будет открыть каждый из других файлов HTML и добавить туда тот же атрибут id.
- Поскольку второй и третий блоки похожи друг на друга, им можно назначить класс. Затем, какой бы стиль вы ни применили к этому классу, он будет применяться к обоим этим div.Поскольку оба содержат информацию о чем-то, добавьте атрибут к каждому из этих div.
- Теперь просмотрите абзацы внутри элемента
. Наверху должен быть обзорный абзац. Добавьте к этому абзацу, чтобы его можно было стилизовать иначе, чем другие абзацы. - В настоящее время у вас есть несколько абзацев, которые содержат заполнитель, например «Этот раздел скоро будет завершен». Для каждого из этих абзацев добавьте. Это позволит стилизовать содержимое заполнителя иначе, чем завершенное содержимое.При добавлении содержимого в эти разделы в будущем вам нужно будет не забыть удалить этот класс.
Раздаточные материалы / Интернет-документы
Готово?
После того, как вы добавили элементы id и class в каждый из div на домашней странице вашего портфолио, теперь у вас есть инфраструктура, которая добавляет больше разнообразия стилям на вашей странице. Покажите свою страницу преподавателю, прежде чем перейти к Уроку 2.
Руководство по поддержке CSS в браузерах — Smashing Magazine
Об авторе
Рэйчел Эндрю (Rachel Andrew) — веб-разработчик, писатель и докладчик.Она является автором ряда книг, в том числе The New CSS Layout. Она одна из тех, кто стоит за… Больше о Рэйчел ↬
Это может расстраивать, когда вы хотите использовать функцию и обнаруживаете, что она не поддерживается или ведет себя по-разному в разных браузерах. В этой статье Рэйчел Эндрю подробно описывает различные типы проблем, связанных с поддержкой браузеров, и показывает, как развивается CSS, чтобы облегчить их решение.
Мы никогда не будем жить в мире, где у всех, просматривающих наши сайты, будет одинаковый браузер и версия браузера, точно так же, как мы никогда не будем жить в мире, где у всех одинаковый размер экрана и разрешение.Это означает, что работа со старыми браузерами или браузерами, которые не поддерживают то, что мы хотим использовать, является частью работы веб-разработчика. Тем не менее, сейчас дела обстоят намного лучше, чем в прошлом, и в этой статье я собираюсь взглянуть на различные типы проблем поддержки браузера, с которыми мы можем столкнуться. Я собираюсь показать вам несколько способов справиться с ними, а также посмотрю на то, что может помочь в ближайшее время.
Почему у нас такие различия?
Даже в мире, где большинство браузеров основано на Chromium, не все эти браузеры используют ту же версию Chromium, что и Google Chrome.Это означает, что браузер на основе Chromium, такой как Vivaldi, может быть на несколько версий ниже Google Chrome.
И, конечно же, пользователи не всегда быстро обновляют свои браузеры, хотя эта ситуация улучшилась в последние годы, поскольку большинство браузеров автоматически обновляются.
Есть также способ, которым новые функции в первую очередь попадают в браузеры. Это не тот случай, когда новые функции для CSS разрабатываются рабочей группой CSS, а полная спецификация передается поставщикам браузеров с инструкциями по ее реализации.Довольно часто только когда происходит экспериментальная реализация, все более тонкие детали спецификации могут быть проработаны. Следовательно, разработка функций — это итеративный процесс , который требует, чтобы браузеры реализовывали эти спецификации при разработке. Хотя реализация в наши дни чаще всего происходит за пометкой в браузере или доступна только в ночной или предварительной версии, как только браузер имеет полную функцию, он, вероятно, включит ее для всех, даже если ни один другой браузер еще не поддерживает.
Все это означает, что — как бы нам это ни хотелось — мы никогда не будем существовать в мире, где функции волшебным образом доступны одновременно на каждом компьютере и телефоне. Если вы профессиональный веб-разработчик, ваша задача — разобраться с этим фактом.
Ошибки и отсутствие поддержки
Есть три проблемы, с которыми мы сталкиваемся в связи с поддержкой браузера:
- Отсутствие поддержки функции
Первая проблема (и ее легче всего решить) — это когда браузер не поддерживает особенность вообще. - Работа с «ошибками» браузера
Второй — когда браузер утверждает, что поддерживает функцию, но делает это способом, отличным от того, как другие браузеры поддерживают эту функцию. Такую проблему мы обычно называем «ошибкой браузера», потому что конечным результатом является непоследовательное поведение. - Частичная поддержка свойств CSS
Это становится все более распространенным; ситуация, в которой браузер поддерживает функцию — но только в одном контексте.
Когда вы видите разницу между браузерами, полезно понимать, с чем вы имеете дело, поэтому давайте рассмотрим каждую из этих проблем по очереди.
1. Отсутствие поддержки функции
Если вы используете свойство или значение CSS, которое браузер не понимает, он проигнорирует его. Это то же самое, используете ли вы функцию, которая не поддерживается, или создаете функцию и пытаетесь ее использовать. Если браузер не понимает эту строку CSS, он просто пропускает ее и переходит к следующему, что понимает.
Этот принцип проектирования CSS означает, что вы можете с удовольствием использовать новые функции, зная, что ничего плохого не случится с браузером, у которого нет поддержки.Для некоторого CSS, используемого исключительно в качестве улучшения, это все, что вам нужно сделать. Используйте эту функцию, убедитесь, что, когда эта функция недоступна, опыт по-прежнему хороший, и все. Этот подход является основной идеей прогрессивного улучшения с использованием этой функции платформы, которая позволяет безопасно использовать новые вещи в браузерах, которые их не понимают.
Если вы хотите проверить, поддерживается ли используемая вами функция браузерами, посетите веб-сайт «Могу ли я использовать».Еще одно хорошее место для поиска подробной информации о поддержке — это страница для каждого свойства CSS в MDN. Данные о поддержке браузера там, как правило, очень подробны.
Новый CSS понимает старый CSS
По мере разработки новых функций CSS уделяется внимание тому, как они взаимодействуют с существующим CSS. Например, в спецификации Grid и Flexbox подробно описано, как
display: grid
иdisplay: flex
работают со сценариями, например, когда плавающий элемент становится элементом сетки или мультиколонный контейнер превращается в сетка.Это означает, что определенные варианты поведения игнорируются, что помогает вам просто перезаписать CSS для не поддерживающего браузера. Эти переопределения подробно описаны на странице прогрессивного улучшения и макета сетки в MDN.Обнаружение поддержки с помощью запросов функций
Вышеупомянутый метод работает только в том случае, если CSS, который вам нужно использовать, не нуждается в других свойствах. Возможно, вам потребуется добавить дополнительные свойства в ваш CSS для старых браузеров, которые затем также будут интерпретироваться браузерами, которые также поддерживают эту функцию.
Хороший пример этого можно найти при использовании Grid Layout. Хотя плавающий элемент, который становится элементом сетки, теряет все поведение с плавающей запятой, вполне вероятно, что если вы попытаетесь создать запасной вариант для макета сетки с помощью float, вы добавите процентную ширину и, возможно, поля к элементам.
.grid> .item { ширина: 23%; маржа: 0,1%; }
%
. (Большой предварительный просмотр)Эти значения ширины и полей будут по-прежнему применяться, когда плавающий элемент является элементом сетки.Ширина становится процентом от дорожки сетки, а не полной шириной контейнера; тогда будет применена любая маржа, а также пробел, который вы могли указать.
.grid> .item { ширина: 23%; маржа: 0,1%; } .сетка { дисплей: сетка; сетка-шаблон-столбцы: 1fr 1fr 1fr 1fr; столбец-разрыв: 1%; }
К счастью, есть функция, встроенная в CSS и реализованная в современных браузерах, которая помогает нам справиться с этой ситуацией.Функциональные запросы позволяют нам напрямую спрашивать браузер, что они поддерживают, а затем действовать в соответствии с ответом. Как и Media Query, который проверяет некоторые свойства устройства или экрана, Feature Queries проверяет поддержку свойства и значения CSS.
Тест на поддержку
Тестирование на поддержку — самый простой случай, мы используем
@supports
, а затем проверяем свойство и значение CSS. Содержимое внутри Feature Query будет запускаться только в том случае, если браузер ответит истиной, т.е. он поддерживает эту функцию.Тест на отсутствие поддержки
Вы можете спросить браузер, не поддерживает ли он какую-либо функцию. В этом случае код внутри Feature Query будет запускаться только в том случае, если браузер указывает, что он не поддерживает.
@ не поддерживает (отображение: сетка) { .элемент { / * CSS из браузеров, которые не поддерживают макет сетки * / } }
Тест для нескольких вещей
Если вам нужно поддерживать более одного свойства, используйте
и
.@supports (display: grid) and (shape-outside: circle ()) { .элемент { / * CSS из браузеров, поддерживающих сетку и формы CSS * / } }
Если вам нужна поддержка того или иного имущества, используйте
или
.@supports (display: grid) или (display: flex) { .элемент { / * CSS из браузеров, поддерживающих сетку или flexbox * / } }
Выбор свойства и значения для тестирования для
Вам не нужно тестировать каждое свойство, которое вы хотите использовать — просто что-то, что указывало бы на поддержку функций, которые вы планируете использовать.Поэтому, если вы хотите использовать макет сетки, вы можете протестировать отображение
: сетка
. В будущем (и когда поддержка подсеток появится в браузерах) вам, возможно, понадобится быть более конкретным и проверить функциональность подсеток. В этом случае вы должны протестироватьgrid-template-columns: subgrid
, чтобы получить истинный ответ только от тех браузеров, в которых реализована поддержка подсеток.Если мы теперь вернемся к нашему примеру с плавающей альтернативой, мы увидим, как функциональные запросы будут разбираться в этом за нас.Что нам нужно сделать, так это запросить браузер, чтобы узнать, поддерживает ли он макет сетки. Если это так, мы можем установить ширину элемента обратно на
auto
, а поле на0
..grid> .item { ширина: 23%; маржа: 0,1%; } @supports (display: grid) { .сетка { дисплей: сетка; сетка-шаблон-столбцы: 1fr 1fr 1fr 1fr; столбец-разрыв: 1%; } .grid> .item { ширина: авто; маржа: 0; } }
См. Запросы и сетку функций пера (Рэйчел Эндрю) на CodePen.
См. Запросы и таблицу функций пера (Рэйчел Эндрю) на CodePen.Обратите внимание, что, хотя я включил весь код сетки в свой запрос функции, мне это не нужно. Если браузер не понимает свойства сетки, он игнорирует их, чтобы они могли безопасно находиться за пределами запроса функции. В этом примере в запросе функции должны быть свойства полей и ширины, поскольку они необходимы для старого кода браузера, но также могут применяться поддерживающими браузерами.
Охватите каскад
Очень простой способ предложить запасные варианты — использовать тот факт, что браузеры игнорируют CSS, который они не понимают, и тот факт, что там, где все остальное имеет одинаковую специфичность, порядок источника учитывается с точки зрения какой CSS применяется к элементу.
Сначала вы пишете свой CSS для браузеров, которые не поддерживают эту функцию. Затем проверьте, поддерживается ли свойство, которое вы хотите использовать, и если браузер подтверждает, что он поддерживает, перезапишите резервный код новым кодом.
Это примерно та же процедура, которую вы могли бы использовать при использовании медиа-запросов для адаптивного дизайна после подхода, ориентированного на мобильные устройства. При таком подходе вы начинаете с макета для небольших экранов, а затем добавляете или перезаписываете элементы для больших по мере продвижения по точкам останова.
Могу ли я использовать запросы функций CSS? Данные о поддержке запросов функций CSS в основных браузерах с сайта caniuse.com.
Вышеупомянутый способ работы означает, что вам не нужно беспокоиться о браузерах, которые не поддерживают запросы функций. Как вы можете видеть из Can I Use , Feature Queries действительно имеют отличную поддержку. Выдающиеся браузеры, которые их не поддерживают, являются любой версией Internet Explorer.
Однако вероятно, что новая функция, которую вы хотите использовать, также не поддерживается в IE.Итак, в настоящее время вы почти всегда начинаете с написания CSS для браузеров без поддержки, а затем тестируете с помощью Feature Query. Этот запрос функции должен проверить на поддержку .
- Браузеры, поддерживающие запросы функций, вернут истину, если у них есть поддержка, и поэтому будет использоваться код внутри запроса, перезаписывающий код для старых браузеров.
- Если браузер поддерживает запросы функций, но не тестируемую функцию, он вернет false. Код внутри запроса функции будет проигнорирован.
- Если браузер не поддерживает Feature Queries, то все внутри блока Feature Query будет проигнорировано, что означает, что браузер, такой как IE11, будет использовать ваш старый код браузера, что, скорее всего, именно то, что вы хотите!
2. Работа с «ошибками» браузера
Вторая проблема поддержки браузера, к счастью, становится все реже. Если вы прочитаете «Чего мы желали» (опубликовано в конце прошлого года), вы сможете получить небольшой экскурс в некоторые из наиболее загадочных ошибок браузеров прошлого.Тем не менее, любое программное обеспечение подвержено ошибкам, и браузеры не исключение. И, если мы добавим к этому тот факт, что из-за цикличности реализации спецификации иногда браузер что-то реализовал, а затем спецификация изменилась, поэтому теперь им нужно выпустить обновление. Пока это обновление не будет выпущено, мы можем оказаться в ситуации, когда браузеры делают что-то по-другому друг с другом.
Feature Queries не могут нам помочь, если браузер сообщает о поддержке чего-то, что плохо поддерживает. Нет режима, в котором браузер мог бы сказать: « Да, но вам, вероятно, не понравится .«Когда обнаруживается фактическая ошибка совместимости, именно в таких ситуациях вам, возможно, придется проявить немного больше творчества.
Если вы думаете, что видите ошибку, первое, что нужно сделать, это подтвердить ее. Иногда, когда мы думаем, что видим баги и браузеры делают разные вещи, вина лежит на нас. Возможно, мы использовали недопустимый синтаксис или пытаемся стилизовать искаженный HTML. В этих случаях браузер попытается что-то сделать; однако, поскольку вы не используете языки в том виде, в каком они были разработаны, каждый браузер может работать по-своему.Быстрая проверка правильности вашего HTML и CSS — отличный первый шаг.
На этом этапе я бы, вероятно, произвел быстрый поиск и посмотрел, была ли моя проблема широко понята. Есть несколько репозиториев известных проблем, например Flexbugs и Gridbugs. Однако даже несколько хорошо подобранных ключевых слов могут привести к появлению сообщений или статей о переполнении стека, которые охватывают эту тему, и могут дать вам обходной путь.
Но предположим, что вы действительно не знаете, что вызывает ошибку, что затрудняет поиск решения.Итак, следующий шаг — создать сокращенный тестовый пример вашей проблемы, то есть исключить все, что не имеет отношения к делу, чтобы помочь вам точно определить, что вызывает ошибку. Если вы считаете, что у вас есть ошибка CSS, можете ли вы удалить какой-либо JavaScript или воссоздать тот же стиль вне фреймворка? Я часто использую CodePen, чтобы собрать сокращенный тестовый пример того, что я вижу; у этого есть дополнительное преимущество, заключающееся в том, что я могу предоставить мне код таким образом, чтобы я мог легко поделиться с кем-нибудь, если мне нужно спросить об этом.
В большинстве случаев, когда вы изолировали проблему, можно придумать альтернативный способ достижения желаемого результата.Вы обнаружите, что кто-то другой придумал хитрый обходной путь, или вы можете написать где-нибудь, чтобы попросить совета.
С учетом сказанного, если вы думаете, что у вас есть ошибка браузера, и вы не можете найти кого-либо, говорящего об этой же проблеме, вполне возможно, что вы обнаружили что-то новое, о чем следует сообщить. Со всем новым CSS, который появился недавно, проблемы могут иногда проявляться, когда люди начинают использовать что-то в сочетании с другими частями CSS.
Ознакомьтесь с этим сообщением от Леа Веру о сообщении о таких проблемах: «Помогите сообществу! Сообщайте об ошибках браузера! ».В статье также есть отличные советы по созданию сокращенного тестового примера.
3. Частичная поддержка свойств CSS
Третий тип проблем стал более распространенным из-за способа разработки современных спецификаций CSS. Если мы подумаем о Grid Layout и Flexbox, эти спецификации используют свойства и значения Уровня 3 выравнивания блока для выравнивания. Поэтому такие свойства, как
align-items
,justify-content
иcolumn-gap
, указаны для использования как в сетке, так и во Flexbox, а также в других методах макета.На момент написания, однако, свойства
gap
работают в Grid Layout во всех браузерах, поддерживающих сетку, аcolumn-gap
работают в Multicol; однако только Firefox реализовал эти свойства для Flexbox.Если бы я использовал поля для создания запасного варианта для Flexbox, затем протестировал бы
column-gap
и удалил поля, у моих блоков не было бы места между ними в браузерах, которые поддерживаютcolumn-gap
в сетке или мультиколонке, поэтому мой запасной интервал будет удален.@supports (расстояние между столбцами: 20 пикселей) { .flex { маржа: 0; / * почти все поддерживает column-gap, так что это всегда удалит поля, даже если у нас нет поддержки пробелов в flexbox. * / } }
Это текущее ограничение для запросов функций. У нас нет возможности проверить поддержку одной функции в другой функции. В приведенной выше ситуации я хочу спросить браузер: «Есть ли у вас поддержка разрыва столбцов в Flexbox?» Таким образом, я могу получить отрицательный ответ и воспользоваться резервным вариантом.
Существует аналогичная проблема со свойствами фрагментации CSS:
break-before
,break after
, andbreak inside
. Поскольку у них лучшая поддержка при печати страницы, браузеры часто требуют поддержки. Однако, если вы тестируете поддержку в мультиколичестве, вы получаете ложные срабатывания. Я поднял вопрос в рабочей группе CSS по этому вопросу, однако решить эту проблему непросто. Если у вас есть мысли, пожалуйста, добавьте их туда.Тестирование поддержки селектора
В настоящее время запросы функций могут тестировать только свойства и значения CSS. Еще одна вещь, которую мы можем захотеть проверить, — это поддержка новых селекторов, например, тех, что указаны на уровне 4 спецификации Selectors. Существует поясняющее примечание, а также реализация за флагом в Firefox Nightly новой функции для запросов функций, которая позволит достичь этого.
Если вы посетите
about: config
в Firefox и включите флагlayout.css.supports-selector.enabled
, тогда вы можете проверить, поддерживаются ли различные селекторы. Синтаксис в настоящее время очень прост, например, для проверки: имеет селектор
:@supports selector (: has) { .элемент { / * CSS для поддержки: has * / } }
Эта спецификация находится в разработке, однако вы можете увидеть, как добавляются функции, помогающие нам справляться с постоянными проблемами поддержки браузеров, пока мы говорим.
Дополнительная литература
Может показаться разочаровывающим, когда вы хотите использовать функцию и обнаруживаете, что она не поддерживается одним из основных браузеров, или если кажется, что что-то работает по-разному.Я собрал некоторые практические материалы, которые могут помочь.
(il)Как предотвратить разрывы строк с помощью CSS
Введение
Разработчики обычно любят переносить текст на веб-страницу. Обтекание тем или иным образом ограничивает текст и предотвращает проблемы с дизайном. Перенос текста также может предотвратить горизонтальную прокрутку. Но бывают случаи, когда вы хотите, чтобы блоки текста оставались на одной строке независимо от длины. Вы можете предотвратить разрывы строк и перенос текста для определенных элементов, используя свойство CSS
white-space
.В этом уроке вы стилизуете один и тот же блок текста четырьмя разными способами, сначала с разрывами строки, а затем трижды без разрывов строки:
Медузафиш-полосатая морская собачка, сайра, белуга, белуга. Индийский Mul mora cisco masu, лосось, петух-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, колючий гигантский данио Сакраменто.
Медузафиш-полосатая морская собачка, сайра, белуга, белуга. Индийский Mul mora cisco masu, лосось, петух-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, колючий гигантский данио Сакраменто.
Медузафиш-полосатая морская собачка, сайра, белуга, белуга. Индийский Mul mora cisco masu, лосось, петух-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, колючий гигантский данио Сакраменто.
Медузафиш-полосатая морская собачка, сайра, белуга, белуга. Индийский Mul mora cisco masu, лосось, петух-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, колючий гигант Данио Сакраменто.
Это предоставит вам несколько вариантов переноса или отсутствия переноса текста.
Предварительные требования
Для выполнения этого руководства вам потребуется:
Шаг 1. Предотвращение и принудительное разрывы строк в CSS
На этом шаге вы создадите таблицу стилей с тремя разными классами. Каждый из них будет обрабатывать разрывы строк по-разному: первый будет разбивать текст по умолчанию, а второй и третий заставят текст не создавать новую строку и разрыв.
Сначала создайте и откройте новый файл с именем
main.css
, используяnano
или ваш предпочтительный редактор:Добавьте следующий контент, который представит три класса CSS, которые используют несколько свойств, включая
пробел
:./main.css
.sammy-wrap { радиус границы: 6 пикселей; цвет фона: голубой; граница: 2 пикселя серого цвета; максимальная ширина: 70%; отступ: 1em; нижнее поле: .4em; } .sammy-nowrap-1 { радиус границы: 6 пикселей; цвет фона: голубой; граница: 2 пикселя серого цвета; максимальная ширина: 70%; отступ: 1em; нижнее поле: .4em; белое пространство: nowrap; } .sammy-nowrap-2 { радиус границы: 6 пикселей; цвет фона: голубой; граница: 2 пикселя серого цвета; максимальная ширина: 70%; отступ: 1em; нижнее поле:.4em; белое пространство: nowrap; переполнение: скрыто; переполнение текста: многоточие; }
Ваш первый класс —
.sammy-wrap
. Он определяет шесть общих свойств CSS, включаяborder-radius
,background-color
,border max-width
,padding
иmargin-bottom
. Этот класс создаст визуальный блок, но не определяет никаких специальных свойств оболочки. Это означает, что он будет разрывать строки по умолчанию.Ваш второй класс —
.Самми-Новрап-1
. Он определяет тот же блок, что и.sammy-wrap
, но теперь вы добавляете другое свойство:white-space
. Свойствоwhite-space
имеет множество параметров, каждый из которых определяет, как обрабатывать пустое пространство внутри данного элемента. Здесь вы установилиwhite-space
наnowrap
, что предотвратит все разрывы строк.Ваш третий класс —
.sammy-nowrap-2
. Он добавляетпробелов
и два дополнительных свойства:overflow
иtext-overflow
.Свойствоoverflow
обрабатываетпрокручиваемое переполнение
, которое происходит, когда содержимое внутри элемента выходит за границы этого элемента. Свойствоoverflow
может сделать это содержимое прокручиваемым, видимым или скрытым. Вы устанавливаетеoverflow
наhidden
, а затем используете свойствоtext-overflow
, чтобы добавить еще больше настроек.переполнение текста
может помочь вам сигнализировать пользователю, что дополнительный текст остается скрытым. Вы установили это значение, многоточие
, так что теперь ваша линия не будет ни разрываться, ни выходить за пределы рамки.CSS скроет переполнение и сигнализирует о скрытом содержимом с помощью...
.Сохраните и закройте файл.
Теперь, когда у вас есть таблица стилей, вы готовы создать короткий HTML-файл с образцом текста. Затем вы загрузите веб-страницу в браузер и проверите, как CSS может предотвратить разрывы строк.
Шаг 2 — Создание файла HTML
Определив классы CSS, вы можете применить их к образцу текста.
Создайте и откройте файл с именем
.index.html
в предпочитаемом вами редакторе. Поместите его в ту же папку, что иmain.css
:Добавьте следующий контент, который свяжет
main.css
как вашу таблицу стилей./index.html
Как предотвратить разрыв строки с помощью CSS Медузафишский полосатый киллиф, каторжник, сайра, белуга, осетр. Индийский лосось Mul mora cisco masu, петушиная рыба-реквием, длинноносая ланцетная рыба, синяя рыба, красный окунь Sacramento, двустворчатый гигантский данио.
Медузафишская полосатая киллифиш, каторжник, сайра, белуха, белуга, осетр. Индийский Mul mora cisco masu, лосось, петух-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, колючий гигантский данио Сакраменто.
Медузафишская полосатая киллифиш, каторжник, сайра, белуха, белуга, осетр. Индийский лосось Mul mora cisco masu, петушиная рыба-реквием, длинноносая ланцетная рыба, синяя рыба, красный окунь Sacramento, двустворчатый гигантский данио.
<Р> Medusafish & NBSP; ленточный & NBSP; Killifish & NBSP; арестант & NBSP; собачка & NBSP; сайра & NBSP; threadsail & NBSP; белуха & NBSP;. Осетровые рыбы & NBSP; Индийские & NBSP; мул & NBSP; мор & NBSP; сиг & NBSP; Мас & NBSP; лосось, & NBSP; roosterfish & NBSP; реквием & NBSP; акулы & NBSP; Нос & NBSP; lancetfish & NBSP; луфаря & NBSP; красный & NBSP ; луциан & nbsp; Sacramento & nbsp; двустворчатый & nbsp; гигантский & nbsp; данио.Первому текстовому блоку назначен стандартный стиль обтекания, второму —
nowrap
, третьему —nowrap
,скрытый
с многоточиемsammy-wrap
четвертому образцу, но вы переопределяете обертку по умолчанию, вставляя неразрывные пробелы (& nbsp;
) непосредственно в HTML. Если вам нужно предотвратить перенос строки как разовую ситуацию, неразрывные пробелы могут обеспечить быстрое решение.Откройте
index.html
в веб-браузере и просмотрите свои результаты. Ваши четыре текстовых блока будут выглядеть так:Медузафиш-полосатая морская собачка, сайра, белуга, белуга. Индийский Mul mora cisco masu, лосось, петух-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, колючий гигантский данио Сакраменто.
Медузафиш-полосатая морская собачка, сайра, белуга, белуга. Индийский Mul mora cisco masu, лосось, петух-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, колючий гигантский данио Сакраменто.
Медузафиш-полосатая морская собачка, сайра, белуга, белуга. Индийский Mul mora cisco masu, лосось, петух-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, колючий гигантский данио Сакраменто.
Медузафиш-полосатая морская собачка, сайра, белуга, белуга. Индийский Mul mora cisco masu, лосось, петух-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, колючий гигант Данио Сакраменто.
Вы успешно настроили свои свойства CSS, чтобы предотвратить или разрешить разрывы строк в четырех различных стилях.
Заключение
В этом руководстве вы использовали CSS для предотвращения разрывов строк в блоке текста. Вы стилизовали текст внутри поля, а затем добавили свойство
, пробел
, чтобы переопределить перенос текста по умолчанию. Чтобы узнать больше об обработке переноса текста и пробелов, рассмотрите возможность изучения всего свойства CSSwhite-space
.Что делать, если робот Googlebot не может получить доступ к файлам CSS / JS на вашем сайте
Если на этой неделе вы получили уведомление от Google Webmaster Tools о том, что робот Googlebot не может получить доступ к файлам CSS / JS (javascript) на вашем сайте, тогда будьте уверены ты не одинок.Многие владельцы веб-сайтов сообщили о получении этого уведомления, как, в частности, отмечается на таких сайтах, как SERoundtable.com и Searchenginejournal.com.
Многие запаниковали при получении сообщения, возможно, предполагая, что это означает, что на их сайте возникла серьезная проблема, которую нужно исправить, или возникли проблемы с Google. После получения уведомлений от Google для моих сайтов, а также от некоторых наших клиентов, я решил изучить проблему дополнительно.
Это не новая проблема
Как отмечает seroundtable.com, Google уже давно рекомендовал веб-мастерам не блокировать CSS / Javascript от робота Googlebot. Фактически, Мэтт Каттс, глава группы Google по веб-спаму и эксперт по поисковой оптимизации, сказал веб-мастерам об этом еще в 2012 году.
Кроме того, в руководстве для веб-мастеров Google четко сказано: «Чтобы помочь Google полностью понять содержание вашего сайта, разрешить всем ресурсов вашего сайта, таких как файлы CSS и JavaScript, для сканирования. «Однако похоже, что Google только на этой неделе начал рассылать уведомления веб-мастерам, чтобы сообщить им, что их сайты в настоящее время блокируют доступ робота Googlebot к CSS / JS файлы.
Почему Google должен сканировать ваши файлы CSS / Javascript
В течение многих лет веб-мастерам говорили не позволять роботу Google сканировать их файлы CSS / Javascript. В конце концов, эти файлы являются просто активами сайта, а не содержанием, изображениями или другими важными SEO-компонентами сайта. Из-за этого многие веб-мастера добавляли строки в свой файл robots.txt, чтобы сообщить роботу Googlebot не сканировать их файлы CSS / Javascript. Какое-то время Google не особо высказывался о том, почему веб-мастера не должны этого делать, поэтому многие полагали, что это нормально или даже «хорошо».
Однако, как отмечалось выше, Google все более и более твердо объясняет, почему вам необходимо разрешить роботу Googlebot сканировать эти файлы. Еще в октябре 2014 года Пьер Фар из Google сказал: «Запрет на сканирование файлов Javascript или CSS в файле robots.txt вашего сайта напрямую влияет на качество обработки и индексации вашего контента нашими алгоритмами и может привести к неоптимальному ранжированию».
Перевод: Google необходимо «видеть» эти файлы, чтобы правильно отображать веб-страницы и точно оценивать их. Если Google не может «видеть» эти файлы Javascript / CSS, возможно, ваш сайт занимает не так хорошо, как должен.
Мой сайт получил уведомление — у моего сайта проблемы?
Как упоминалось выше, многие веб-мастера запаниковали, получив это уведомление от Google. К счастью, это не повод для паники — на данный момент Google, похоже, не активно наказывает сайты, которые блокируют сканирование файлов CSS / Javascript.
Это не значит, что Google не будет наказывать сайты за несоблюдение их правил и разрешение сканирования файлов JS / CSS. Скорее, похоже, что Google просто предупреждает веб-мастеров о том, что их сайты не соответствуют требованиям и что, если они и дальше не соблюдают правила, их рейтинг может снизиться.Другими словами: сделайте свой сайт совместимым ДО того, как Google начнет вас наказывать.
Как я могу это исправить?
Как вы решите эту проблему, будет зависеть от платформы вашего сайта, хотя, вообще говоря, потребуется некоторое редактирование файла robots.txt для вашего сайта. Например, сайты, созданные на платформе WordPress, которые получают это предупреждение от Google, как правило, блокируют свою папку / wp-includes / файлом robots.txt. В этом случае вам необходимо отредактировать файл robots.txt, чтобы удалить блокировку строки / wp-includes /.Файл robots.txt обычно находится в корневом каталоге вашего веб-сайта.
При просмотре файла robots.txt найдите любую из следующих строк кода:
Disallow: /.js$*
Disallow: /.inc$*
Disallow: /.css$*
Disallow : /.php$*Или все, что упоминает Disallow: / wp-includes /, / wp-admin / или аналогичные.
Затем просто удалите эти строки, сохраните файл robots.txt и загрузите новый файл на свой сайт. Другое известное решение — добавить следующие строки в файл robots.txt:
#Googlebot
User-agent: Googlebot
Allow: * .css
Allow: * .js # globalUser-agent: *
Disallow: / wp-admin /
Disallow: / wp-includes / Затем сохраните файл и загрузите его на свой сайт.
-