Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Модное кулинарное Шоу! Игра в ресторан, приготовление блюд, декорирование домов и преображение внешности героев.

Кулинарные истории

Казуальные, Новеллы, Симуляторы

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

CSS + Web-программирование

С этим тегом используют

HTML Программирование Верстка Javascript IT Web Frontend Программист Веб-разработка Все
86 постов сначала свежее
11
Web.Study
Web.Study
2 года назад
Web-технологии

Использование CSS-селектора :has() на примерах⁠⁠

Как вы знаете в CSS существует псевдокласса :has(). С его помощью можно изменить родительский элемент, содержащий определённый дочерний элемент либо элемент, следующий за ним. Пока ничего непонятно, да? Давай посмотрим на практике


Из-за того, что на Пикабу нормально вставить код без потери отступов не получается, я залил эту статью в телегу. Поэтому, если вам нужно скопировать код, то перейдите к этому посту


Как использовать CSS-селектор :has()?


Рассмотрим следующий HTML-код с двумя родственными элементами с классом everybody. Как бы вы выбрали тот, у которого есть потомок с классом a-good-time?

Использование CSS-селектора :has() на примерах Программирование, IT, CSS, Frontend, Web-программирование, Веб-разработка, Гифка, Длиннопост

С CSS-селектором :has() это можно реализовать следующим образом:

Использование CSS-селектора :has() на примерах Программирование, IT, CSS, Frontend, Web-программирование, Веб-разработка, Гифка, Длиннопост

Это выбирает первый экземпляр .everybody и применяет к нему animation. В этом примере целью является элемент с классом everybody. Условием является наличие потомка с классом a-good-time.

Использование CSS-селектора :has() на примерах Программирование, IT, CSS, Frontend, Web-программирование, Веб-разработка, Гифка, Длиннопост

Но :has() гораздо больше возможностей. Вот некоторые из них.

Выбрать anchor, которые не имеют прямого потомка SVG:

Использование CSS-селектора :has() на примерах Программирование, IT, CSS, Frontend, Web-программирование, Веб-разработка, Гифка, Длиннопост

Выбрать label, у которых есть родственный input:

Использование CSS-селектора :has() на примерах Программирование, IT, CSS, Frontend, Web-программирование, Веб-разработка, Гифка, Длиннопост

Выбрать documentElement, в котором некое состояние присутствует в DOM:

Использование CSS-селектора :has() на примерах Программирование, IT, CSS, Frontend, Web-программирование, Веб-разработка, Гифка, Длиннопост

И так далее.



Совместимость :has() с браузерами


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

Использование CSS-селектора :has() на примерах Программирование, IT, CSS, Frontend, Web-программирование, Веб-разработка, Гифка, Длиннопост

CSS-селектор :has() на практике


Это реализация без единой строчки на JavaScript. Для начала можете посмотреть и самостоятельно протестировать пример, который реализован в CodePen:

Использование CSS-селектора :has() на примерах Программирование, IT, CSS, Frontend, Web-программирование, Веб-разработка, Гифка, Длиннопост

Теперь рассмотрим его подробнее. Итак, CSS-псевдокласс :hover срабатывает, когда пользователь наводит на элемент мышью, но при этом активировать его необязательно.


Красивая плавность в примере заключается в создании набора кастомных свойств на основе сглаживающей кривой (easing curve). В нашем случае это:

Использование CSS-селектора :has() на примерах Программирование, IT, CSS, Frontend, Web-программирование, Веб-разработка, Гифка, Длиннопост

Затем, чтобы применить это, нам нужны правила, которые обновляют пользовательское свойство --lerp для :hover или :focus для каждого элемента или блока. Код ниже предназначен для выбора пяти блоков с комбинацией родственных комбинаторов (+) и :has().

Использование CSS-селектора :has() на примерах Программирование, IT, CSS, Frontend, Web-программирование, Веб-разработка, Гифка, Длиннопост

Последнее, что нужно сделать, это применить всё к самим блокам. Поскольку блоки выложены с помощью flexbox, можно использовать значение --lerp, чтобы изменить flex каждого блока, и translation для каждого элемента:

Использование CSS-селектора :has() на примерах Программирование, IT, CSS, Frontend, Web-программирование, Веб-разработка, Гифка, Длиннопост

А вот сами значения --lerp сгенерированы с помощью утилиты GSAP для распределения значений с помощью сглаживающей кривой.

Показать полностью 11
[моё] Программирование IT CSS Frontend Web-программирование Веб-разработка Гифка Длиннопост
4
28
Web.Study
Web.Study
2 года назад
Лига программистов

14 мастхэв плагинов в Visual Studio⁠⁠

В жизни я многое повидал и перепробовал с десяток плагинов для Visual Studio: и мастхэв, и безделушки, и кривые , и косые.


А ведь качественные плагины частенько приходят на помощь при работе с кодом (особенно новичку). Именно поэтому я делюсь с вами 14-ю полезными расширениями в VS.


Наш балдежный канал по front-end

14 мастхэв плагинов в Visual Studio Программирование, IT, Программист, CSS, Javascript, Веб-разработка, Веб-дизайн, Web-программирование, Frontend, Visual Studio, Длиннопост

JetBrains ReSharper

Непрерывно анализирует код, находит ошибки и проблемы в структуре кода. Что еще есть: безопасное изменение кодовой базы, мгновенный поиск и навигация по всему решению, соответствие стандартам оформления кода. MustHave-плагин для любого программиста.

14 мастхэв плагинов в Visual Studio Программирование, IT, Программист, CSS, Javascript, Веб-разработка, Веб-дизайн, Web-программирование, Frontend, Visual Studio, Длиннопост

Add New File

Плагин позволяет быстро добавлять новые директории или файлы в проект. Просто нажмите Shift+F2, чтобы создать новый пустой файл или вложенную структуру из папок и файлов.

14 мастхэв плагинов в Visual Studio Программирование, IT, Программист, CSS, Javascript, Веб-разработка, Веб-дизайн, Web-программирование, Frontend, Visual Studio, Длиннопост

Side Scroller

Плагин добавляет горизонтальную прокрутку с помощью колесика мыши в редактор кода Visual Studio. Для этого зажмите клавишу Shift.

14 мастхэв плагинов в Visual Studio Программирование, IT, Программист, CSS, Javascript, Веб-разработка, Веб-дизайн, Web-программирование, Frontend, Visual Studio, Длиннопост

ZenCoding

Это аналог плагина EMMET, адаптированный под Visual Studio. Плагин позволяет быстро генерировать HTML-разметку, используя синтаксис CSS. Также в комплект входит генератор Lorem Ipsum, генератор Lorem Pixel, генератор PlaceHold.it.

14 мастхэв плагинов в Visual Studio Программирование, IT, Программист, CSS, Javascript, Веб-разработка, Веб-дизайн, Web-программирование, Frontend, Visual Studio, Длиннопост

Syntax Highlighting Pack

Плагин добавляет дополнительную подсветку синтаксиса и поддержку сниппетов для многих языков программирования, включая Clojure, Go, Jade, Lua, Swift, Ruby и прочие.

14 мастхэв плагинов в Visual Studio Программирование, IT, Программист, CSS, Javascript, Веб-разработка, Веб-дизайн, Web-программирование, Frontend, Visual Studio, Длиннопост

HTML Snippet Pack

Плагин позволяет более продуктивно работать с разметкой HTML (генерация, автозакрытие тегов). Отлично дополняет ранее объявленный ZenCoding.

14 мастхэв плагинов в Visual Studio Программирование, IT, Программист, CSS, Javascript, Веб-разработка, Веб-дизайн, Web-программирование, Frontend, Visual Studio, Длиннопост

Editor Enhancements

Плагин добавляет такую функциональность как HTML/URL encoding, трансформация и сортировка выделенного участка текста, хеширование по различным алгоритмам.

14 мастхэв плагинов в Visual Studio Программирование, IT, Программист, CSS, Javascript, Веб-разработка, Веб-дизайн, Web-программирование, Frontend, Visual Studio, Длиннопост

File Icons

Добавляет привлекательные иконки для различных типов файлов, которые не может распознать Visual Studio.

14 мастхэв плагинов в Visual Studio Программирование, IT, Программист, CSS, Javascript, Веб-разработка, Веб-дизайн, Web-программирование, Frontend, Visual Studio, Длиннопост

File Nesting

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

14 мастхэв плагинов в Visual Studio Программирование, IT, Программист, CSS, Javascript, Веб-разработка, Веб-дизайн, Web-программирование, Frontend, Visual Studio, Длиннопост

Image Optimizer

Плагин добавляет возможность оптимизации изображений прямо из Visual Studio. Оптимизировать можно JPEG (MozJPEG компрессия), PNG (Zopfli компрессия), обычные и анимированные GIF. Также можно сохранить изображение в виде строки base64 dataURI.

14 мастхэв плагинов в Visual Studio Программирование, IT, Программист, CSS, Javascript, Веб-разработка, Веб-дизайн, Web-программирование, Frontend, Visual Studio, Длиннопост

Open Command Line

Плагин добавляет поддержку консолей различных типов, включая cmd, PowerShell, Bash и другие.

14 мастхэв плагинов в Visual Studio Программирование, IT, Программист, CSS, Javascript, Веб-разработка, Веб-дизайн, Web-программирование, Frontend, Visual Studio, Длиннопост

Bundler and Minifier

Плагин позволяет реализовывать связывание и минификацию файлов JavaScript, CSS, HTML.

14 мастхэв плагинов в Visual Studio Программирование, IT, Программист, CSS, Javascript, Веб-разработка, Веб-дизайн, Web-программирование, Frontend, Visual Studio, Длиннопост

Web Compiler

Расширение позволяет компилировать файлы LESS, Sass Stylus, JSX, ES6 и CoffeeScript.

14 мастхэв плагинов в Visual Studio Программирование, IT, Программист, CSS, Javascript, Веб-разработка, Веб-дизайн, Web-программирование, Frontend, Visual Studio, Длиннопост

CSS Tools

Плагин добавляет улучшения для CSS-редактора в Visual Studio, такие как превью обозначенного шрифта или картинки, подсказки для цветов, Drag 'n drop некоторых элементов и другие.

Показать полностью 14
[моё] Программирование IT Программист CSS Javascript Веб-разработка Веб-дизайн Web-программирование Frontend Visual Studio Длиннопост
6
32
Web.Study
Web.Study
2 года назад
Web-технологии

Адаптивная вёрстка: что это, а главное зачем⁠⁠

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

Если вы забьете болт на адаптивность, то будьте готовы к тому, что ваш сайт будет открываться криво у какого-нибудь Антона из Пензы с телефоном 5-летней давности с не самым актуальным разрешением.


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

Наш уютный канал в телеграме

Адаптивная вёрстка: что это, а главное зачем Программирование, IT, CSS, Javascript, Web-программирование, Веб-дизайн, Frontend, Длиннопост

Адаптивная вёрстка меняет дизайн страницы в зависимости от поведения пользователя, платформы, размера экрана и ориентации девайса и является неотъемлемой частью современной веб-разработки. Она позволяет существенно экономить и не отрисовывать новый дизайн для каждого разрешения, а менять размеры и расположение отдельных элементов.



Частичное решение: делаем всё гибким


Конечно, это не идеальный способ, но он устраняет большую часть проблем с адаптивной вёрсткой.

Итан Маркотт (Ethan Marcotte) создал простой шаблон, демонстрирующий использование гибкой вёрстки:

Адаптивная вёрстка: что это, а главное зачем Программирование, IT, CSS, Javascript, Web-программирование, Веб-дизайн, Frontend, Длиннопост

Весь дизайн — микс адаптивных слоев, картинок и, в некоторых местах, умной разметки. Создание адаптивных слоев — частая практика, чего нельзя сказать об адаптивных картинках. Однако если они вам нужны, обратите внимание на следующие техники:


- Hiding and Revealing Portions of Images;

- Creating Sliding Composite Images;

- Foreground Images That Scale With the Layout.


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

Адаптивная вёрстка: что это, а главное зачем Программирование, IT, CSS, Javascript, Web-программирование, Веб-дизайн, Frontend, Длиннопост

Если уменьшить изображение целиком, надписи станут нечитаемыми. Поэтому, чтобы сохранить логотип, картинка поделена на две части: первая часть (иллюстрация) используется как фон, вторая (логотип) изменяет свои размеры пропорционально.


<h1 id="logo"> 
<a href="#"><img src="site/logo.png" alt="The Baker Street Inquirer"/>
</a> </h1>

Элемент h1 содержит изображение в качестве фона, а картинка выровнена относительно фона контейнера (заголовка).



Гибкие изображения


Работа с картинками — одна из самых главных проблем при работе с адаптивной вёрсткой сайтов. Существует много способов для изменения размера изображений, и большинство из них довольно просто реализовать. Одно из решений — использование max-width в CSS:


img {max-width: 100%;}

Максимальная ширина изображения равняется 100% от ширины экрана или окна браузера, поэтому чем меньше ширина, тем меньше картинка. Обратите внимание, что max-width не поддерживается в IE, поэтому используйте width: 100%.


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



Ещё один способ: отзывчивые изображения


Вы можете использовать Picturefill для того чтобы сделать изображения чувствительными к изменениям размера экрана.


Для этого нужно скачать файл picturefill.js, а затем написать следующий код, внутри тега head:


<script src="picturefill.js"></script>

Чтобы подгрузка этого файла не влияла на загрузку сайта, рекомендуем добавить в тег script атрибут async. Это позволит сайту загружаться не дожидаясь файла picturefill.js. Однако, для того чтобы старые браузеры распознавали элементы picture, вам нужно добавить строку, document.createElement( "picture" ); перед первым тегом script.


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


<img
sizes="(min-width: 40em) 80vw, 100vw"
srcset="examples/images/medium.jpg 375w,
examples/images/large.jpg 480w,
examples/images/extralarge.jpg 768w"
alt="…">

Атрибут sizes используется для того, чтобы указать сколько места будет занимать изображение. Подробнее о значениях sizes и srcset здесь.

Для более явного контроля над изображениями существует элемент picture.

Интересная фича для iPhone


В iPhone и iPod touch есть особенность: дизайн, созданный для больших экранов, просто сожмется в браузере с маленьким разрешением без скролла или дополнительной мобильной вёрстки. Однако изображений и текста не будет видно:

Адаптивная вёрстка: что это, а главное зачем Программирование, IT, CSS, Javascript, Web-программирование, Веб-дизайн, Frontend, Длиннопост

Для решения данной проблемы используется тег meta:

<meta name="viewport" content="width=device-width; initial-scale=1.0">

Если initial-scale равно единице, ширина картинок становится равной ширине экрана.

Настраиваемая структура макета страницы


Для значительных изменений размера страницы может понадобиться изменить расположение элементов в целом. Это удобно делать через отдельный файл с адаптивной вёрсткой CSS или, что более эффективно, через CSS-медиазапрос. Проблем возникнуть не должно, т. к. большинство стилей останутся прежними, и изменятся только некоторые.


Например, у вас есть главный файл со стилями, который задает #wrapper, #content, #sidebar, #nav вместе с цветами, фоном и шрифтами. Если ваши главные стили делают макет слишком узким, коротким, широким или высоким, вы можете это определить и подключить новые стили.


style.css (основной):

/* Основные стили, которые будут унаследованы дочерней таблицей стилей */
html,body{
background...
font...
color...
}
h1,h2,h3{}
p, blockquote, pre, code, ol, ul{}
/* Структурные элементы */
#wrapper{
width: 80%; 
margin: 0 auto; 
background: #fff; 
padding: 20px;
}
#content{
width: 54%; 
float: left; 
margin-right: 3%;
}
#sidebar-left{
width: 20%; 
float: left; 
margin-right: 3%;
}
#sidebar-right{
width: 20%; 
float: left;
}

mobile.css (дочерний):

#wrapper{
width: 90%;
}

#content{
width: 100%;
}

#sidebar-left{
width: 100%;
clear: both;

/* Дополнительные стили для нового дизайна */
border-top: 1px solid #ccc;
margin-top: 20px;
}

#sidebar-right{
width: 100%;
clear: both;

/* Additional styling for our new layout */
border-top: 1px solid #ccc;
margin-top: 20px;
}
Адаптивная вёрстка: что это, а главное зачем Программирование, IT, CSS, Javascript, Web-программирование, Веб-дизайн, Frontend, Длиннопост

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


О других особенностях адаптивной верстки в CSS в статье о нетривиальных моментах разработки фронтэнда на CSS.



Адаптивная вёрстка с помощью медиазапросов CSS3


Рассмотрим, как можно использовать CSS3-медиазапросы для создания адаптивного дизайна. min-width задает минимальную ширину окна браузера или экрана, к которой будут применены определенные стили. Если какое-нибудь значение будет ниже min-width, то стили будут проигнорированы. max-width делает противоположное.


Пример:


@Media screen and (min-width: 600px) {
.hereIsMyClass {
width: 30%;
float: right;
}
}
Медиазапрос заработает только когда min-width будет больше или равна 600 px.


@Media screen and (max-width: 600px) {

.aClassforSmallScreens {
clear: both; font-size: 1.3em;
}
}

В этом случае класс (aClassforSmallscreens) будет работать при ширине экрана меньше или равной 600 px.


В то время как min-width и max-width могут быть применимы и к ширине экрана, и к ширине окна браузера, нам может понадобиться работать только с шириной устройства. Например, чтобы игнорировать браузеры, открытые в маленьком окне. Для этого можно использовать min-device-width и max-device-width:


@Media screen and (max-device-width: 480px) {
.classForiPhoneDisplay {
font-size: 1.2em;
}
}

@Media screen and (min-device-width: 768px) {
.minimumiPadWidth {
clear: both;
margin-bottom: 2px solid #ccc;
}
}

Специально для iPad у медиазапросов есть свойство orientation, значениями которого могут быть либо landscape (горизонтальный), либо portrait (вертикальный):

@media screen and (orientation: landscape) {
.iPadLandscape {
width: 30%;
float: right;
}
}

@media screen and (orientation: portrait) {
.iPadPortrait {
clear: both;
}
}

Также значения медиазапросов можно комбинировать:

@media screen and (min-width: 800px) and (max-width: 1200px) {
.classForaMediumScreen {
background: #cc0000;
width: 30%;
float: right;
}
}

Этот код будет выполнен только для экранов или окон браузеров шириной от 800 до 1200 px.

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

<link rel="stylesheet" media="screen and (max-width: 600px)" href="small.css"/>
<link rel="stylesheet" media="screen and (min-width: 600px)" href="large.css"/>
<link rel="stylesheet" media="print" href="print.css"/>



JavaScript

Если ваш браузер не поддерживает CSS3-медиазапросы, то замену стилей можно организовать с помощью jQuery:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

<script type="text/javascript">
$(document).ready(function(){
$(window).bind("resize", resizeWindow);
function resizeWindow(e){
var newWindowWidth = $(window).width();

// Если ширина меньше 600 px, используется таблица стилей для мобильного
if(newWindowWidth < 600){
$("link[rel=stylesheet]").attr({href : "mobile.css"});
} else if(newWindowWidth > 600){
// Если ширина больше 600 px, используется таблица стилей для десктопа
$("link[rel=stylesheet]").attr({href : "style.css"});
}
}
});
</script>


Низкий поклон всем тем, кто дочитал. Вы герои

Показать полностью 5
[моё] Программирование IT CSS Javascript Web-программирование Веб-дизайн Frontend Длиннопост
2
15
Web.Study
Web.Study
2 года назад
Web-технологии

Анимированные кнопки выравнивания на CSS⁠⁠

Еще больше таких решений для новичков во front-end

Анимированные кнопки выравнивания на CSS Программирование, IT, Web-программирование, Веб-дизайн, Веб-разработка, CSS, Гифка

Вроде бы простая, но приятная анимация кнопок выравнивания текста. Выполнена с помощью SVG и CSS. Если решите сделать свой редактор текста, то можно использовать эту или похожую анимацию выравнивания:


https://codepen.io/jkantner/pen/xxWZeLz

[моё] Программирование IT Web-программирование Веб-дизайн Веб-разработка CSS Гифка
11
7
Web.Study
Web.Study
2 года назад
Web-технологии

Анимированная полка с вещами на CSS⁠⁠

Телеграм - https://t.me/havaevau_webstudy

Анимированная полка с вещами на CSS Программирование, IT, Web-программирование, Web, Веб-дизайн, Веб-разработка, CSS

Сodepen-проект «My Stuff» наглядно демонстрирует современные возможности препроцессоров для HTML и CSS, а именно Pug и SCSS. Посмотрите сами, как относительно малым количеством строк, можно реализовать интересный анимированный рисунок:


https://codepen.io/annampawl/pen/yLvoGQY

Показать полностью 1
[моё] Программирование IT Web-программирование Web Веб-дизайн Веб-разработка CSS
5
7
Web.Study
Web.Study
2 года назад
Web-технологии

Полоса прокрутки (scrollbar) - один из самых неиспользуемых элементов в веб-разработке. Как с ним работать?⁠⁠

Полоса прокрутки присутствует сегодня на любом сайте видимо или невидимо. Это вполне обыденный элемент, на который обычно никто не обращает особого внимания.


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


Телеграм - https://t.me/havaevau_webstudy

Полоса прокрутки (scrollbar) - один из самых неиспользуемых элементов в веб-разработке. Как с ним работать? Программирование, IT, Разработка, Web-программирование, Web, Веб-дизайн, CSS, Длиннопост

Основы


Бывает, что содержимое элемента не помещается в нем, так как оно слишком велико. И чтобы сделать содержимое прокручиваемым, можно использовать overflow: auto. Благодаря ему полосы прокрутки будут отображаться по умолчанию.


Вы можете кастомизировать скроллбар используя свойства scrollbar с префиксом -webkit в сочетании с обычными свойствами ширины scrollbar-width и цвета scrollbar-color.


Хочу сказать про плагин postcss-scrollbar - он создает свойства скроллбара с префиксом -webkit из стандартных свойств. Это дает возможность получить получить кросс-браузерные стили, например через такой код:

.scroll-container {
overflow: auto;
scrollbar-width: thin;
scrollbar-color: hsl(0 0% 50%);
/* postcss-scrollbar will add the -webkit version automatically! */
}


Темы и scrollbar


На многих сайтах при переключении на темный режим скроллбары "застревают" в белом

Полоса прокрутки (scrollbar) - один из самых неиспользуемых элементов в веб-разработке. Как с ним работать? Программирование, IT, Разработка, Web-программирование, Web, Веб-дизайн, CSS, Длиннопост

Есть отличные свойства - color-scheme, через которые это можно исправить. Но юзать их вам придется не только в ситуациях с полосой прокрутки. Можете почитать об этом более подробно здесь - https://web.dev/color-scheme/


html {
/* defer to OS preference */
color-scheme: dark light;
/* override, assuming the theme toggler sets a data-theme attribute */
&[data-theme=light] { color-scheme: light; }
&[data-theme=dark] { color-scheme: dark; }
}


Как предотвратить смещение верстки


При использовании overflow: auto может возникнуть проблема - смещение верстки. Решить её поможет overflow: overlay - скроллбар никогда не будет занимать место и/или overflow: scroll - полоса прокрутки всегда будет на месте


А с помощью scrollbar-gutter: stable вы можете "сказать" браузеру, чтобы он зарезервировал место для полос прокрутки.


.scroll-container {
overflow: scroll;
@supports (scrollbar-gutter: stable) {
overflow: auto;
scrollbar-gutter: stable;
}
}

На этом все, прокачивайте свои скроллбары, пишите: был ли у вас опыт в их кастомизации?

Показать полностью 2
[моё] Программирование IT Разработка Web-программирование Web Веб-дизайн CSS Длиннопост
30
Аноним
Аноним
2 года назад
Лига программистов

С чего начать изучать веб разработку? Лучшие ресурсы для изучения!⁠⁠

[моё] IT Программирование Курсы программирования Разработка YouTube Программист Web-программирование Javascript CSS Основы HTML HTML Видео
8
Партнёрский материал Реклама
specials
specials

Как бросить курить и не сорваться: инструкция от тех, кто смог⁠⁠

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

Как бросить курить и не сорваться: инструкция от тех, кто смог Курение, Борьба с курением, Зависимость, Telegram (ссылка), ВКонтакте (ссылка), Длиннопост

История 1 — отражение

@holoroad

Маленькая дочка почти научилась ходить и всюду телепалась за мной. Я не курил при ней. Ходил на балкон, а она, прильнув к стеклу, смотрела на меня и ждала, когда я докурю и выйду к ней. И в какой-то момент она начала повторять за мной вот эти движения. Маленький человечек, ей было года полтора или два, прикладывала воображаемую сигарету к губам, а потом делала вид, что выпускает дым. И весело так на меня смотрела, сквозь стекло балконной двери. Ей нравилось все, что со мной связано, и она подражала всем моим действиям. Я курил уже двадцать лет и, конечно, делал множество попыток бросить до этого. Но в этот раз у меня в первый раз появилась по-настоящему важная причина бросить. Это важно для человека, который безгранично мне доверяет. С тех пор прошло почти десять лет, в течение которых я не сделал ни одной затяжки.

Решение бросить курить — одно из лучших, которое вы можете принять для своего здоровья, будущего и близких. Но справиться с зависимостью только потому, что «это вредно» будет тяжело. А вот если хотите не задыхаться, поднимаясь по лестнице, или волнуетесь за своего ребенка, которые вдыхает табачный дым, — уже другое дело.

Сформулируйте, что для вас значит отказ от никотина. Это может быть желание прожить дольше, избавиться от проблем со здоровьем, выглядеть моложе, сэкономить деньги или защитить близких от пассивного курения. Напоминание об этой причине повесьте на видное место.

История 2 — список

@maxneb

Беременность жены, рождение ребенка, здоровье, деньги — ничего не было веским поводом бросить окончательно. Постоянно срывался. Помогло составить список, что теряю и что получаю от сигарет, и понимание, что хотя бы одна затяжка — и все насмарку: пару месяцев буду курить. Только список и его осознание. Для каждого он свой. И постоянное обращение к нему. После составления списка курил еще. Но он как заноза висел в голове с вопросом «зачем?»... Так, что-то щелкнуло и сейчас не тянет. Иногда тянет физически, но осознание бесполезности курения сразу глушит позывы. Полгода, полет нормальный...

Бросать на авось — идея, которая подойдет не всем. Нужно понимать, что делать в трудные моменты:

  • Определите дату отказа. Подготовьтесь морально, уберите сигареты, зажигалки, пепельницы.

  • Замените привычки. Сигарету в руках можно заменить орешками, палочками морковки, жвачкой или даже кубиком льда.

  • Займите время. Вспомните, чем вы любили заниматься: спорт, хобби, прогулки.

  • Планируйте, что делать при тяге. Она длится всего 3–5 минут. Дыхательные практики или звонок другу помогут пережить сильное желание закурить.

  • Откажитесь от «наградных сигарет». Одна затяжка и вы откатитесь назад.

Можно бросить резко, «с понедельника», или постепенно, снижая количество сигарет до нуля. Главное — определиться и не отступать.

История 3 — переключение

@Spaka

45 лет, стаж 30. Пытался завязать много раз, потом понял, что после каждой попытки бросить, курить начинаешь больше. Как ребенок, которому не дают вкусняшку, а она случайно попала ему в руки. Из чего мозг сделал вывод: не уверен — не бросай. Потом стал замечать, что организм уже стал сам просить перестать курить. По утрам было очень неприятно во рту, удовольствие после сигареты стало короче, а негатив, приходящий следом, ощутимее: неприятные ощущения в горле, боли миндалин, страх схватить онкодиагноз. Хотя врачи говорили, что все ок, в голове-то гоняешь мысли. Я решил попробовать обмануть сам себя. Не делать из процесса отказа какого-то события. Бросить так, как будто это и должно было произойти, но ты не знаешь когда. Про себя помолился, как сумел, и попросил помощи, хитро прищурил глаз и в момент, когда забыл купить про запас (оставалась пара штук в пачке), просто перестал курить. Мне теперь даже странно, как я раньше это делал. Так и живу почти два года. Кстати, раньше в момент завязки курящих ненавидел, дым был очень противен, до тошноты. Теперь все равно. Присоединяйтесь ;)

Есть несколько стратегий отказа от курения:

  • Резкий. Эффективный и решительный подход.

  • Постепенный. Сначала — меньше сигарет, потом — меньше затяжек. И так до нуля.

  • Психологическая замена. Каждая сигарета — это ритуал. Найдите для каждого из них «здоровую замену».

  • Медикаментозная терапия. При сильной зависимости врач может порекомендовать никотинозаместительную терапию (пластыри, таблетки, жвачки) или препараты, которые помогают справиться с синдромом отмены. Но любые лекарства принимаются только по рекомендации специалиста.

Каждый, кто хочет оставить зависимость в прошлом, может обратиться в центры здоровья, которые работают при поддержке нацпроекта «Продолжительная и активная жизнь», и получить необходимую помощь специалистов. Адреса доступны на официальном портале Минздрава России о здоровье: takzdorovo.ru. Также можно позвонить на горячую линию по отказу от зависимостей 8 800 200-0-200.

История 4 — форма

Аноним

Курила электронки 2 года как замену обычным сигаретам. Думала, что это не так дорого, не так вредно да и для девушки вроде более привлекательно: не пахнут волосы и руки. А потом решила привести свое тело в форму. Стала ходить в зал и поняла, что задыхаюсь на первом же упражнении, хотя женщины гораздо старше меня бодрячком. Было очень тяжело слезть. Друзья советовали заменять сигаретами. А потом уехала в отпуск в страну, где нельзя покупать электронки, отвлеклась, и после возвращения уже не тянуло. Даже на тусовках, где все дымят.

За модными гаджетами и фруктовыми ароматами скрывается химическая бомба, разрушающая организм быстрее, чем обычные сигареты. Электронные сигареты активно продвигаются производителями как «безопасная» альтернатива сигаретам. Но курение вейпа может обернуться серьезными проблемами: от кашля и одышки до поражения сосудов и дыхательных путей.

«Особую тревогу вызывает рост потребления табачных изделий и электронных сигарет. Согласно исследованию, проведенному в нашем Центре, 36,8% курильщиков потребляют одновременно и табак, и электронные сигареты. Среди молодежи в возрасте 25-39 лет этот показатель превышает 45%. Электронные никотиносодержащие и безникотиновые устройства поражают сердце, сосуды, дыхательную систему и ДНК организма не менее пагубно, чем традиционные сигареты, а в ряде случаев способны вызывать острые состояния, включая сосудистые поражения и летальные исходы» – рассказывает руководитель Центра профилактики и контроля потребления табака НМИЦ терапии и профилактической медицины Минздрава России Маринэ Гамбарян.

История 5 — пари

@kernima

Вроде не было никаких серьезных предпосылок, чтобы бросить. Да и чтобы начать: просто все вокруг курили, думал, это сейчас тренд. А потом как-то сидели в баре и решили поспорить с некурящим другом. Он затирал, что моя жизнь из-за электронки катится ко дну, я — доказывал, что это всего лишь маленькая шалость. В общем поспорили на пять тысяч. Чтобы было легче и можно было отвлечься, начал бегать по утрам. Друг проиграл, а я возвращаться к курению не стал. Вдруг снова у еды появился вкус, я начал высыпаться и больше не устаю на втором лестничном проеме. Короче, советую!))

Сульфат никотина, один из компонентов электронных сигарет, раньше использовали как пестицид, но запретили из-за высокой токсичности. Жидкость для «электронок» содержит и опасные химикаты вроде пропиленгликоля, ацетальдегида и акролеина — промышленных веществ, способных вызывать воспаления, поражения органов и мутации клеток. Ароматизаторы, создающие иллюзию безвредности, на деле могут привести к более тяжелой интоксикации, чем при курении сигарет. А еще вейпы содержат не природный, а синтетический никотин — солевой. Он быстрее всасывается, дольше выводится и вызывает зависимость стремительнее.

Когда организм отвыкает от никотина, бывает нелегко: люди становятся раздражительным и нервозными, быстро устают, возникают сухость во рту, кашель, трудности с концентрацией. Важную роль в борьбе с этими симптомами играет питание. В рацион стоит включить овощи, фрукты, орехи, семечки. Клетчатка способствует очищению организма от токсинов. Важно питаться сбалансировано: с достаточным количеством белков, жиров, углеводов и витаминов. Лучше временно исключить продукты, усиливающие удовольствие от табака (например, мясо), а также отказаться от алкоголя, кофе и крепкого чая. Они могут спровоцировать желание закурить. А вот большое количество воды, травяных чаев и настоев облегчит очищение организма и поможет справиться с сухостью во рту.

История 6 — связь

Аноним

Устал курить, понял, что мне это мешает заниматься спортом и в целом комфортно себя чувствовать. Пошел через ассоциации: покурил во время головной боли, и потом через самовнушение дал себе установку, что голова болела от курения. Звучит странно, конечно, но это сработало. Никотиновую зависимость снижал постепенно через редкое курение кальяна (2-3 раза в неделю с последующим уменьшением).

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

Разберитесь, что именно тянет вас к сигарете: скука, стресс, привычка? Когда вы это осознаете, будет легче подобрать альтернативные действия — прогулку, книгу, разговор с близким. Учитесь распознавать моменты, когда особенно хочется закурить, и переключаться на что-то другое. Можно подключиться к программам или группам поддержки — это поможет не сдаваться. И главное: уберите из дома все сигареты.

История 7 — вершина

Аноним

Поднимался с сыном по Пушкинской тропе на гору Железная. Мне лет сорок пять было, идем общаемся, сын бегает туда-сюда. Ну идем короче, а сзади нас догоняет семейная пара, мирно о чем-то щебеча между собой. Догнали и обходят. И так спокойно удаляются… Все бы ничего, но им лет по шестьдесят, если не больше. Я попробовал в их темпе, но задыхаться стал. Короче, поднялся я на гору, спустился, смял пачку и выкинул в мусорную урну. Вот уже 13 лет не курю. Стаж 27 лет.

Курение — это быстро развивающаяся зависимость, схожая по механизму с наркотической. Никотин воздействует на мозг, вызывая кратковременное улучшение настроения, за которым следует упадок сил и потребность в новой дозе. Со временем формируется толерантность, и прежние негативные реакции организма на табак ослабевают. Физическая зависимость сочетается с психологической: сигарета начинает ассоциироваться с отдыхом, решением задач, рутиной. Курение укрепляется поведенческими шаблонами: кофе, вождение, паузы на работе уже не мыслимы без сигареты.


Каждый, кто пытался избавиться от никотиновой зависимости, знает, как это тяжело. Ломка, раздражительность, навязчивые мысли. Даже при переходе на вейпы, иллюзия «меньшего вреда» быстро развеивается: химические коктейли из ароматических смесей также бьют по легким, сосудам и всему организму.

Хорошая новость в том, что вы не одни. В сообществе «Давай бросать» (ВКонтакте и мессенджере Telegram), который работает при поддержке нацпроекта «Продолжительная и активная жизнь» знают, каково бороться с триггерами, искать замену привычке и удерживать себя от срыва. Здесь делятся историями тех, кто смог, поддерживают тех, кто только начал, и помогают разобраться в главном: как пережить отказ без мучений.

Социальная реклама. АНО «Национальные приоритеты», ИНН: 9704007633

Показать полностью
Курение Борьба с курением Зависимость Telegram (ссылка) ВКонтакте (ссылка) Длиннопост
10
shaitan.vladimir
shaitan.vladimir
2 года назад
Web-технологии

Тип данных Object в JavaScript⁠⁠

Привет, в этом уроке мы основательно пройдемся по типу данных object, рассмотрим типы объектов, свойства, научимся создавать объекты и узнаем различия между ними, а также поговорим об операторе typeof и нюансах его работы. Текстовый урок в полной версии статьи.

Object


object - ссылочный тип данных, является то самостоятельной единицей, имеющей свойства и определённый тип.


У объекта есть свойства которые с ним ассоциируется. Свойство объекта можно понимать как переменные закрепленные за ним.


Для того чтобы создать объект у нас есть несколько способов.

Конструктор класса


// Вызов конструктора класса Object
let objectExample_1 = new Object();

// Далее наполняем его данными
objectExample_1.name = 'John';
objectExample_1.age = 22;

В примере выше мы создали внутри объекта свойства name и age и записали в них данные.

Литерал


Мы можем использовать более простой и удобный синтаксис для создания объектов.


let objectExample_2 = {}
// наполнение объекта данными

objectExample_2.name = 'Alice';
objectExample_2.age = 30;
console.log(objectExample_2)

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


let objectExample_3 = {
name: 'Vladimir',
age: 25
}
console.log(objectExample_3)
Как видите, литеральный синтаксис намного удобнее нежели создание через конструктор класса. Его и будем использовать.


let user = {
firstName: 'John',
lastName: 'Doe',
age: 30,
gender: 'male'
}

Допустим я хочу получить имя данного пользователя.


console.log(user);
console.log(user.firstName);

Аналогичным образом я могу получить доступ ко всем значениям свойств объекта.


console.log(user.lastName);
console.log(user.age);
console.log(user.gender);

Синтаксис квадратных скобок - []


Ключи в объектах это всегда строки или Symbol, сосредоточимся пока на строках. Как мы знаем строки не всегда могу состоять из одного слова в котором нет пробелов и как быть если нам нужно создать свойство в объекте имя которого будет состоять из 2х слов разделенных пробелами или вообще будет являться выражением. Для этого будем использовать [ ].


let student = {
firstName: 'John',
['last name']: 'Dou', // Имя свойства содержащее пробел
['student-' + 'age']: 30, // Вычисляемое имя свойства
}
console.log(student);

Получить значения этих свойств у нас просто так не получится. Если мы будем использовать синтаксис точки '.' то получим ошибку. Вместо этого будем использовать квадратные скобки [ ].


console.log(student.firstName) // Обычный способ
console.log(student['last name'])
console.log(student['student-age'])

Готово, теперь все работает!

Вложенные объекты


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


const deepObject = {
name: 'Mazda',
model: '#1',
owner: {
firstName: 'John',
lastNam: 'Doe',
age: 12
}
}
console.log(deepObject)

Это простой пример, на самом деле вложенность может быть очень большой, важно понимать что так можно делать.

Array

array - массив данных, а также итерируемый объект, также относится к типу данных object. Ключи для элементов массива создаются автоматически и являются индексами, позицией элемента внутри массива.

Индексирование массива начинается с нуля.

const arr = ['John', 'Alice', 'Andrew', 'Antony'];
console.log(arr)

У массива есть длинна (length), это свойство содержит количество элементов массива.

console.log(arr.length);

Берем элементы по их индексу.


console.log(
arr[0], arr[1], arr[2], arr[3]
)

Если мы хотим гарантировано получить значение последнего элемента в массиве.


console.log(
arr[arr.length - 1]
)

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

Функции


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


Для создания функции существует несколько способов ключевое слово function и стрелочный синтаксис.


function foo(a, b) {
return a + b;
}

const bar = (a, b) => {
return a - b;
}

console.log(foo);
console.log(bar);

Функции также являются объектами и относятся к типу данных object.



Файлы с урока

P.S. Подпишись на мой youtube и telegram канал чтобы регулярно получать новый контент.

Показать полностью
[моё] Разработка Программирование Программист IT Баг Собеседование Javascript Frontend Web-программирование Web Языки программирования Курсы программирования HTML CSS Создание сайта Видео YouTube Длиннопост
9
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии