Сообщество - Web-технологии

Web-технологии

534 поста 5 786 подписчиков

Популярные теги в сообществе:

1707

Ответ на пост «Универсальная шпаргалка на ДР»6


Закодил. Надеюсь не нарушил ничьи права и оскорбил ничьи чувства

Оставляйте комментарии, если найдете ошибки или просто пишите пожелания

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

http://pikabu.9394727.surge.sh/

Делал для себя, просто ради для тренировки и изучения новых технологий (не ругайте за визуал, я не дизайнер, а ui либы было лень подключать)

Ответ на пост «Универсальная шпаргалка на ДР»
2737

«Питухон» - теперь официально :D

Как написал автор изобретения в одном прекрасном бложеке:


«У меня был старый китайский телефон, старый raspberry pi 3b+, python, opencv и немножко deep learning. А еще у меня были соседские курицы, которые меня заебали.»


С нетерпением буду ждать новых видео автора)

10

Настройка HTTPS на своём сайте за 5 минут

Привет, в продолжение к прошлому посту, когда у вас есть сайт работающий через HTTP, наверняка захочется настроить HTTPS, видео как раз об этом :)

https://www.youtube.com/watch?v=FPToTCa9X3Y&ab_channel=БогданСоловьев

24

Топ плагинов для редактора кода

Я собрал топ-5 плагинов для редактора кода VS Code. Аналоги некоторых есть и в других редакторах.


Google Fonts

Позовляет прямо из редактора подключать шрифты из google fonts

Live Server

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

Path Autocomplete

Начинаете писать путь к какому-то файлу и он предлагает папки и файлы.

Auto Close Tag, Auto Complete Tag, Auto Rename Tag

Автоматически закрывают, изменяют тег.

eCSStractor

Супер плагин, позволяет копировать все классы из html в css одним кликом

Другие полезные статьи здесь: free_html_lessons
Показать полностью 6
6

Создание сайта резюме своими руками без программирования

Привет, когда я начинал работать в сфере IT, мне было интересно как сайт оказывается в интернете доступным для просмотра, что за сервер и домен. И как это всё связать воедино и сделать свой сайт доступным в интернете.

Об этом я и снял это видео, надеюсь понятно объяснил 😄
В следующей серии я расскажу как бесплатно подключить SSL, если вам интересно то подписывайтесь (:

https://youtu.be/D4nBlYBtkb8

8

Поток документа | Flexbox | Float | inline-block в CSS

Привет, в этом уроке мы разберемся в том что такое нормальный поток документа, научимся его изменять с помощью CSS свойств, разберемся с тем как работать с inline-block, float и flexbox свойствами. Текстовая версия урок в полной версии статьи.

Поток документа

Поток документа - определяет то каким способом элементы будут располагаться на странице.

Normal flow - базовый поток описывает то как элементы располагаются на странице, когда к ним не применили ни одного CSS свойства.

Для того чтобы чтобы управлять потоком нашего документа с помощью CSS нам в первую очередь нужно выстроить правильный базовый поток документа в нашем HTML.

inline и inline-block

Задача: Необходимо выставить элементы .item друг возле друга по 2 в ряд.


Решение: Для начала выставим ширину элемента 50% и добавим inline-block чтобы они могли выстраиваться друг возле друга.

HTML File - link

.item {
width: 50%;
display: inline-block;
}

Проблема: Ширина наших элементов изменилась, но сами элементы не выстроились друг возле друга. Это происходит из-за того что браузер интерпретирует элементы .item как строчно-блочные, а значит учитывает пробельные символы которые мы ставим внутри нашего HTML документа и также отображает их на странице. Для того чтобы решить это проблему нам необходимо убрать эти пробельные символы которые находятся между нашими блоками .item . Для этого нам достаточно найти родителя блоков .item, а это блок .wrapper и выставить ему font-size: 0.

.wrapper {
font-size: 0;
}

Пробельный символ, это символ аналогичный любой букве, а это значит, что если мы выставим размер шрифта в 0 то он исчезнет и не будет занимать места, как и все остальные символы внутри этого блока.

Сейчас мы видим что элементы на странице выстроились друг возле друга, как мы и задумывали, но текст не отображается, это происходит из-за того что мы поставили размер шрифта для всего текста в блоке 0px. Для того чтобы вернуть текст внутри блоков .item на свое место, нам необходимо задать размер шрифта отдельно для них.

.item {
font-size: 16px;
}

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

Float

Задача: Необходимо выставить элементы .item друг возле друга по 4 в ряд.

Решение: Для начала выставим ширину элемента 50% и добавим float: left чтобы элементы .item могли обтекать друг друга с левой стороны.

HTML File - link

.item {
width: 25%;
float: left;
}

Видим что такой способ достаточно хорош и все сразу стало как нам было нужно. Но есть проблема, если мы проинспектируем родительский элемент (.wrapper) наших .item блоков, то сразу увидим нечто странное, а именно то что высота этого элемента равна 0, как будто в нем нет никаких дочерних элементов, хотя они есть.

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

Обычно для этого используются псевдо-элементы, он них мы будем говорить позднее, но используем их для того чтобы решить нашу проблему.

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

.wrapper:after {
content: '';
display: block;
clear: both;
}

Теперь все отображается правильно, вся суть в том что мы создаем еще один, полностью пустой, элемент и отменяем для него float , с помощью свойства clear: both. После чего этот, пустой, элемент располагается в самом конце нашего блока .wrapper и тем самым растягивает его высоту, и делает ее правильной.

Такое использование будет не слишком удобным, если у нам будет много элементов позиционированных через float, в таком случае на проще сделать отдельный класс который будет добавлять такие стили нужным для нас элементам. Обычно такой класс называется .clearfix.

.clearfix:after {
content: '';
display: block;
clear: both;
}

И добавим его для нашего блока wrapper, единственное что нам нужно делать, это добавлять класс .clearfix, для родительских элементов дети которых позиционированы с помощью свойств float.

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

Flexbox

Задача: Необходимо выставить элементы .item друг возле друга по 2 в ряд.

Решение: Для начала выставим ширину элемента 50% и добавим display: flex чтобы элементы .item могли выстраиваться друг возле друга

HTML File - link

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

.wrapper {
display: flex;
}
.item {
width: 50%;
}

У нас появилась проблема, а именно то что сейчас все элементы встроены в ряд, это происходит по причине того что flex сам, автоматически пересчитывает ширину игнорируя заданную нами ширину для элементов. Для того чтобы это исправить, нам необходимо добавить свойство flex-wrap: wrap для родительского элемента .wrapper .

.wrapper {
flex-wrap: wrap;
}

Теперь мы сами можем контролировать контролировать ширину наших внутренних элементов через CSS, но не забывайте, что если вам подходит стандартное поведение flex и его автоматическая работа с шириной, то можете игнорировать flex-wrap: wrap

Другие возможности

Для того чтобы удобно работать с элементами у flex есть ряд других свойств которые помогают удобно позиционировать элементы.

Для наглядности изменю ширину элементов .item

.item {
width: 18%;
}

Свойство justify-content помогает нам позиционировать элементы по горизонтали Все его значение рассмотрим на странице в видео уроке.

.wrapper {
justify-content: space-evenly;
}

Свойство align-items помогает нам позиционировать элементы по вертикали, для наглядности я увеличу высоту блока .wrapper .

Все его значение рассмотрим на странице в видео уроке.

.wrapper {
border-top: 3px solid black;
border-bottom: 3px solid black;
background-color: #ccc;
height: 600px;
/* flex свойство */
align-items: center;
}

flex-direction

Свойство flex-direction определяет в каком направлении будут отображаться элементы. По умолчанию flex-direction равно значению row, в зависимости от направления отображения у нас будет изменяться и работа свойств justify-content и align-items

Для flex-direction: row и row-reverse:


justify-content - будет позиционировать по горизонтали

align-items - будет позиционировать по вертикали

Для flex-direction: column и column-reverse:


justify-content - будет позиционировать по вертикали

align-items - будет позиционировать по горизонтали

Все его значение рассмотрим на странице в видео уроке.

.wrapper {
height: initial;
/* flex свойство */
flex-direction: row;
}

Свойство order - позволяет нам, вручную, определять в котором будут отображаться элементы. Свойство order должно задаваться внутренним элементам, вложенным в .wrapper, а значит тем которые являются детьми первого уровня элемента у которой присутствует свойство display: flex.

В нашем случае это элементы .item так как они является детьми .wrapper у которого и прописано свойство display: flex.

.item:nth-child(1) {
order: 4
}
.item:nth-child(2) {
order: 1
}
.item:nth-child(3) {
order: 2
}
.item:nth-child(4) {
order: 3
}

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

Все файлы с урока

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

Показать полностью

Прошу подсказать по приёмам и инструментам

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

Для текста пока под вопросом, для браузеров нашёл варианты - дополнение в Chrome (пока не знаю, можно ли его добавить в SRWare Iron) и Opera Neon.

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


Одна из мыслей - специально для разработки развернуть Kubuntu и в KDE настроить куб Рабочих столов. Мне кажется, такой подход эффективнее будет.


Расскажите, какие приёмы и инструменты вы применяете при вёрстке сайтов.

У меня обычно браузер, Eclipse и Far Manager (на компьютере развёрнут WEMP)

Прошу подсказать по приёмам и инструментам

Для оценки проблемы - скрин.


Буду благодарен за советы. Сам давно в ИТ, но на лавры профессионального веб-разработчика не претендую. Да и по админству знания фрагментарные. К счастью, работа в команде позволяет спросить совета у более опытных в других вещах коллег. Но и свои хобби стараюсь не забывать.


Возможно, имеются наборы скриптов или какие-то вещи, облегчающие жизнь разработчика.

С уважением.

Показать полностью 1
10

Тип данных 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 канал чтобы регулярно получать новый контент.

Показать полностью
Отличная работа, все прочитано!