Источник Github: модуль отмечает, что квалифицированный младший инженер по интерфейсу должен освоить| Просите звездочки ✨ | Ставьте ❤️ подписку, ❤️ лайк, ❤️ поощряйте автора
Привет всем, яКороль Демонов Нэчжа, приятно познакомиться~~
Жизненное кредо Нэчжи:Если вам нравится то, что вы изучаете, у вас будет сильная мотивация.
Изучая программирование каждый день, вы будете в шаге от своей мечты. Спасибо каждому программисту, который любит программирование. Какими бы замечательными ни были ваши знания, пойдемте со мной, чтобы успокоить это блуждающее сердце, продолжайте, давай,2021
давай! Добро пожаловать, чтобы подписаться и добавить меняvx:xiaoda0423
, добро пожаловать, лайкайте, добавляйте в избранное и комментируйте
Не бойтесь мечтать, но не просто мечтайте, будьте деятелем, а не болтуном, и делайте все возможное.
предисловие
Если эта статья вам поможет, ставьте ❤️ подписку, ❤️ лайк, ❤️ подбадривайте автора, вы приняли вызов? Публичный аккаунт статьи публикуется впервые, обратите вниманиеПрограммист ДораэмонПолучите последние статьи в первый раз
❤️Заправки❤️~
веб-модуль
базовая структура html
-
html
Этикетки изготавливаются<>
В окружении ключевых слов. -
html
Теги обычно идут парами, разделенными на начало тега и конец тега. - Некоторые теги не имеют закрывающего тега, это одиночные теги, и необходимо использовать одиночные теги.
/
конец. - Весь контент страницы находится в
html
в этикетке. -
html
Метки делятся на три части: имя метки, содержимое метки, атрибуты метки. -
html
Тег является семантическим, и о содержании тега можно судить по названию тега.Роль семантики заключается в том, что структура веб-страницы становится более понятной, ее легче индексировать поисковыми системами, и она легче выводится на экран. читателям читать содержимое веб-страницы. - Содержимое тега — это содержимое пары тегов.
- Содержимым тегов могут быть другие теги.
Свойства ярлыка
-
class
атрибут: имя класса, используемое для определения элемента -
id
атрибут: используется для указания уникальногоid
, значение этого свойства равноhtml
уникальный в документе -
style
Атрибут: используется для указания встроенного стиля элемента. Использование этого атрибута переопределит любые глобальные настройки стиля. -
title
Атрибуты: дополнительная информация, используемая для указания элемента -
accesskey
Свойства: сочетания клавиш, используемые для указания активного элемента. -
tabindex
Атрибут: используется для указания того, что элемент находится вtab
порядок ключей -
dir
Атрибут: используется для указания направления текста содержимого в элементе, атрибут имеет толькоltr
илиrtl
два -
lang
атрибут: язык, используемый для указания содержимого элемента
Свойства события
-
window
оконные события,onload
, который срабатывает после завершения загрузки страницы,onunload
, что происходит, когда пользователь покидает страницу (клик для перехода, перезагрузка страницы, закрытие окна браузера и т. д.) -
form
формируют события,onblur
, срабатывает, когда элемент теряет фокус,onchange
, который срабатывает при изменении значения элемента,onfocus
, который срабатывает, когда элемент получает фокус,onreset
, который срабатывает при нажатии кнопки сброса в форме,onselect
, который срабатывает при выделении текста в элементе,onsubmit
, который срабатывает при отправке формы -
keyboard
события клавиатуры,onkeydown
, который срабатывает, когда пользователь нажимает клавишу,onkeypress
, который срабатывает, когда кнопка нажимается после того, как пользователь нажимает кнопку. Это свойство действует не на все ключи, а не на все ключи:alt,ctrl,shift,esc
-
mouse
события мыши,onclick
, который срабатывает, когда происходит щелчок мышью по элементу,onblclick
, который срабатывает при двойном щелчке мыши по элементу,onmousedown
, который срабатывает при нажатии кнопки мыши на элементе,onmousemove
, который срабатывает при наведении указателя мыши на элемент,onmouseout
, который срабатывает, когда указатель элемента перемещается за пределы элемента,onmouseup
, срабатывает, когда кнопка мыши отпускается на элементе.Media
медийные мероприятия,onabort
, который срабатывает при выходе,onwaiting
, срабатывает, когда воспроизведение медиафайла остановлено, но он собирается продолжить воспроизведение.
текстовая метка
- теги абзаца
<p></p>
, теги абзаца используются для описания абзаца текста - тег заголовка
<hx></hx>
, тег title используется для описания заголовка, всего тег title имеет шесть уровней,<h1></h1>
Теги обычно появляются только один раз на странице - Подчеркните ярлыки утверждений,
<em></em>
, используется, чтобы подчеркнуть важность определенных слов - больше внимания уделяется этикеткам,
<strong></strong>
и<em>
Как и теги, он используется для выделения текста, но выделяет немного больше. - Нет семантических меток
<span></span>
, метки не содержат семантики - короткая текстовая справочная метка
<q></q>
, краткая текстовая цитата - теги цитирования длинного текста
<blockquote></blockquote>
, определение длинных текстовых ссылок - метка новой строки
<br/>
Вкладка «Мультимедиа»
- тег ссылки,
<a></a>
- тег изображения,
<img/>
- тег видео,
<video></video>
- аудио тег,
<audio></audio>
список
- теги неупорядоченного списка,
ul,li
,<ul></ul>
Список определяет неупорядоченный список,<li></li>
Представляет каждый элемент в списке без необходимости - упорядоченный список,
ol,li
- определить список,
<dl></dl>
, список определений обычно и<dt></dt>
и<dd></dd>
используется с тегами
лист
- вкладка таблицы
<table></table>
- ряд таблицы
<tr></tr>
- заголовок таблицы
<th></th>
- Клетка
<td></td>
- Объединение таблиц, в одной строке объединение нескольких столбцов
colspan="2"
, внутри одного столбца объединить несколько строкrowspan="3"
тег формы
- тег формы
<form>
<form></form>
Форма может передавать данные, введенные браузером, на сторону сервера, чтобы программа на стороне сервера могла обрабатывать данные, отправленные формой.
<form method="传送方式" action="服务器文件">
action
, где данные, введенные зрителем, передаются
method
, способ передачи данных
- входной тег
<input/>
name
: имя текстового поля, которое используется для отправки формы и получения данных в фоновом режиме.
value
: Установите значение по умолчанию для поля ввода текста.
type
: путем определения различныхtype
тип,input
функция другая.
text 单行文本输入框
password 密码输入框(密码显示为***)
radio 单选框 (checked属性用于显示选中状态)
checkbox 复选框(checked属性用于显示选中状态)
file 上传文件
button 普通按钮
reset 重置按钮(点击按钮,会触发form表单的reset事件)
submit 提交按钮(点击按钮,会吃饭form表单的submit事件)
email 专门用于输入 e-mail
url 专门用于输入 url
number 专门用于number
range 显示为滑动条,用于输入一定范围内的值
date 选取日期和时间(还包含:month、week、time、datetime、datetime-local)
color 选取颜色
button
кнопка, выпадающее окно выбора<select></select>
<option value="提交值">选项</option>是下拉选择框里面的每一个选项
- Текстовое поле:
<textarea></textarea>
, когда пользователь хочет ввести большой объем текста, используйте текстовое поле.cols
, количество столбцов многострочного поля ввода,rows
, количество строк в многострочном поле ввода.
другие семантические теги
- Коробка
<div></div>
- заголовок веб-страницы
<header></header>
,html5
Добавлены семантические теги для определения заголовка веб-страницы, которые в основном используются для макета и разделения структуры страницы. - нижняя информация
<footer></footer>
,html5
Добавлены семантические теги для определения нижней части веб-страницы, которые в основном используются для макета и разделения структуры страницы. - навигация
<nav></nav>
,html5
Добавьте семантические теги, определите навигацию, в основном используемую для макета, разделите структуру страницы. - статья
<article></article>
,html5
Добавьте семантические теги, определите статью, в основном используемую для макета, разделите структуру страницы - Боковая панель
<aside></aside>
, Семантические теги, определяют информацию вне предметного содержания, в основном используются для верстки и разделяют структуру страницы. - отметка времени
<time></time>
, семантическая метка, определяющая время
Структура веб-страницы
-
<!DOCTYPE html>
Определяет тип документа и сообщает браузеру, какой стандарт интерпретироватьHTML
-
<html></html>
может сообщить браузеру, что этоHTML
Документация -
<body></body>
Содержимое между тегами является основным содержанием веб-страницы. -
<head></head>
Тег используется для определения заголовка документа, это контейнер для всех элементов заголовка. -
<title></title>
элемент определяет заголовок документа -
<link>
этикетка будетcss
ссылка на файл стиляHTML
внутри файла -
<meta>
Определить метаданные документа
Модульное деление
- Обычные корпоративные веб-сайты в основном состоят из области заголовка, области отображаемого изображения, области темы и нижней информационной области.
- Принципы разделения веб-страницы: – сверху вниз – изнутри наружу
Синтаксис кода CSS
-
CSS
Каскадные таблицы стилей(Cascading Style Sheets)
, который в основном используется для определенияHTML
Стиль отображения содержимого в браузере, например размер текста, цвет, полужирный шрифт и т. д. -
css
код обычно хранится в<style></style>
внутри этикетки -
css
Стили состоят из селекторов и объявлений, которые, в свою очередь, состоят из свойств и значений. - селектор
{属性:值}
- Селекторы: также известные как селекторы, указывающие элементы на веб-странице, к которым применяются правила стиля.
Размещение CSS
- Встроенные стили, не рекомендуется
- Встроенная таблица стилей
- Таблица стилей контура
Наследование CSS
-
CSS
Часть стилей наследуются, наследование — это правило, позволяющее применять стили не только к конкретному элементу html-тега, но и к его потомкам. - Ненаследуемые стили:
display、margin、border、padding、background、height、min-height、max-height、width、min-width、max-width、overflow、position、left、right、top、bottom、z-index、float、clear
- Наследуемые стили:
letter-spacing、word-spacing、white-space、line-height、color、font、font-family、font-size、font-style、font-variant、font-weight、text-decoration、text-transform、direction、visibility、cursor
Вид селектора
- Селектор тегов: по имени тега, изменить
css
стиль - Селектор подстановочных знаков: выбирает все элементы на странице.
- селектор атрибутов
- Селектор потомков: выбирает все элементы ниже родительского элемента.
- Селектор дочерних элементов первого уровня: выбирает прямые дочерние элементы родительского элемента, селектор потомков выбирает все дочерние элементы родительского элемента, а селектор дочерних элементов первого уровня выбирает только дочерние элементы первого уровня и не будет поиск ниже по элементу
-
id
селектор: пройтиid
Найти уникальные теги на странице -
class
селектор: по конкретномуclass
(класс), чтобы найти соответствующий тег на странице для.class
название - Селектор псевдокласса:
:hover
Наведите мышь на элемент;:before
вставить содержимое перед элементом;:after
Вставить содержимое после элемента - Групповые селекторы: вы можете установить один и тот же стиль для нескольких разных селекторов.
приоритет селектора
- Когда разные селекторы стилизуют один и тот же объект, а два селектора имеют одно и то же свойство, которому присвоены разные значения.
- Какой стиль селектора применяется путем вычисления того, какой селектор имеет наибольшее значение веса
- Метод расчета веса:
标签选择器:1
class选择器:10
id选择器:100
行内样式:1000
!important 最高级别,提高样式权重,拥有最高级别
стиль фона
- фоновый цвет
background-color
- Фоновое изображение
background-image
background-image:url(bg01.jpg);
- положение фонового изображения
background-position
background-position:10px 100px;
// 代表坐标x,y轴
- Повтор фонового изображения
background-repeat
background-repeat:no-repeat
// no-repeat 设置图像不重复,常用
// round 自动缩放直到适应并填充满整个容器
// space 以相同的间距平铺且填充满整个容器
- Позиционирование фонового изображения
background-attachment
background-attachment:fixed
// 背景图像是否固定或者随着页面的其余部分滚动
// background-attachment的值可以是scroll(跟随滚动),fixed(固定)
-
background
сокращение
background:#ff0000 url(bg01.jpg) no-repeat fixed center
стиль шрифта
- семейство шрифтов
font-family
font-family:"微软雅黑","黑体";
- размер шрифта
font-size
font-size:12px;
Размер шрифта по умолчанию для веб-страниц:
16px
- вес шрифта
font-weight
font-weight:400;
normal(默认)
bold(加粗)
bolder(相当于<strong>和<b>标签)
lighter (常规)
100 ~ 900 整百(400=normal,700=bold)
- Цвет шрифта
color
颜色的英文单词color:red;
十六进制色:color: #FFFF00;
RGB(红绿蓝)color:rgb(255,255,0)
RGBA(红绿蓝透明度)A是透明度在0~1之间取值。color:rgba(255,255,0,0.5)
- курсив
font-style
font-style:italic
normal 文本正常显示
italic 文本斜体显示
oblique 文本倾斜显示
текстовый атрибут
- высота строки
line-height
line-height:50px;
Может поддерживать высоту родительского элемента
- горизонтальное выравнивание текста
text-align
left 左对齐
center 文字居中
right 右对齐
- Вертикальное выравнивание высоты строки текста
vertical-align
baseline 默认
sub 垂直对齐文本的下标,和<sub>标签一样的效果
super 垂直对齐文本的上标,和<sup>标签一样的效果
top 对象的顶端与所在容器的顶端对齐
text-top 对象的顶端与所在行文字顶端对齐
middle 元素对象基于基线垂直对齐
bottom 对象的底端与所在行的文字底部对齐
text-bottom 对象的底端与所在行文字的底端对齐
- отступ текста
text-indent
text-indent:2em;
Отступ первой строки обычно используется в начале абзаца.
- расстояние между буквами
letter-spacing
- интервал между словами
word-spacing
- капитализация текста
text-transform
capitalize 文本中的每个单词以大写字母开头。
uppercase 定义仅有大写字母。
lowercase 定义仅有小写字母。
- украшение для текста
text-decoration
none 默认。
underline 下划线。
overline 上划线。
line-through 中线。
- перенос слова
word-wrap
word-wrap: break-word;
основной стиль
- ширина
width
width:200px;
定义元素的宽度
- высокий
height
height:300px
元素默认没有高度
需要设置高度
可以不定义高度,让元素的内容将元素撑高
- мышиный стиль
cursor
Определить стиль мышиcursor:pointer
default默认
pointer小手形状
move移动形状
- прозрачность
opacity
opacity:0.3
透明度的值0~1之间的数字,0代表透明,1代表完全不透明
透明的元素,只是看不到了,但是还占据着文档流
- видимость
visibility
visibility:hidden;
visible 元素可见
hidden 元素不可见
collapse 当在表格元素中使用时,此值可删除一行或一列,不会影响表格的布局。
- скрыть переполнение
overflow
Устанавливает, как отображается содержимое объекта, когда оно превышает заданную высоту и ширину.
visible 默认值,内容不会被修剪,会呈现在元素框之外。
hidden 内容会被修剪,并且其余内容是不可见的。
scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
- цвет границы
outline
input
Поле ввода текста имеет свою границу, и стиль уродлив, мы можем пройтиoutline
Изменить границы
outline:1px solid #ccc;
outline:none清除边框
сброс стиля
Ранние веб-страницы неcss
Стиль, чтобы сделать интерфейс красивым, многие элементы идут с нимиmargin、padding
и другие стили, но значения, анализируемые этими стилями, различаются в разных браузерах.css
Стиль сбрасывается для обеспечения согласованного отображения в разных браузерах.
清除元素的margin和padding
去掉自带的列表符
去掉自带的下划线
бокс модель стиль
- Блочные элементы, встроенные элементы и встроенные блочные элементы.
Элементы уровня блока:
- Каждый элемент уровня блока начинается с новой строки, а элементы, следующие за ним, начинаются с новой строки.
- Можно установить высоту элемента, ширину, высоту строки, а также верхнее и нижнее поля.
- Ширина элемента, если она не задана, составляет 100% от его собственного родительского контейнера, если не задана ширина.
Встроенные элементы:
- и другие элементы все на одной строке
- Высота элемента, ширина, высота строки, а также верхнее и нижнее поля не могут быть установлены
- Ширина элемента равна ширине содержащегося в нем текста или изображения и не может быть изменена.
Элементы встроенного блока:
- и другие элементы все на одной строке
- Можно установить высоту элемента, ширину, высоту строки, а также верхнее и нижнее поля.
- Преобразование класса элемента
display
block
: преобразовать элемент в элемент блочного уровня.
inline
: преобразовать элемент в элемент уровня строки.
inline-block
: преобразовать элемент в встроенный блочный элемент.
none
: скрыть элемент
- Инсульт
border
border:2px solid #f00;
Стиль линии:
dashed(虚线)| dotted(点线)| solid(实线)。
css
Стили позволяют стилизовать границы только в одном направлении:
下描边border-bottom:1px solid red;
上描边border-top:1px solid red;
右描边border-right:1px solid red;
左描边border-left:1px solid red;
- интервал
margin
div{margin:20px 10px 15px 30px;}
- Заполнение
padding
padding:10px
плаватьплавать
- плавающий принцип
-
Плавающий делает элемент плавающим вне нормального потока документа и плавающим поверх нормального потока.
-
Плавающий элемент по-прежнему отображается в своем положении в нормальном потоке, а затем перемещается как можно дальше влево или вправо в соответствии с заданным направлением плавания, пока внешний край плавающего элемента не встретится с содержащим его блоком или другим плавающим элементом и позволит текст и встроенные элементы окружают его.
-
Плавающий создаст поле на уровне блока (эквивалентно настройке
display:block
), независимо от того, что собой представляет сам элемент.
- Очистить эффект плавания
clear
Очистить поплавок:
none : 不清除(默认值)。
left : 不允许左边有浮动对象
right : 不允许右边有浮动对象
both : 不允许两边有浮动对象
- Используйте псевдокласс для реализации клиринга с плавающей запятой
.clearFix {
content="";
display:block;
width:0;
height:0;
clear:both;
}
Позиционирование позиции
- Функция позиционирования может сделать макет более свободным.
- Модель слоя -- абсолютное позиционирование (относительно родительского класса)
Абсолютное позиционирование сохраняет позицию элемента независимой от потока документа, поэтому он не занимает места. Это отличается от относительного позиционирования, которое на самом деле считается частью модели позиционирования в обычном потоке, поскольку позиция элемента определяется относительно его положения в обычном потоке.
#box_relative {
position: absolute;
left: 30px;
top: 20px;
}
Как показано ниже:
Если вы хотите установить абсолютное позиционирование в модели слоя для элемента, вам нужно установить
position:absolute
(абсолютное позиционирование), результатом этого оператора является перетаскивание элемента из потока документа, а затем использованиеleft、right、top、bottom
Свойство абсолютно позиционируется относительно ближайшего родительского блока, содержащего свойство position. Если такой содержащий блок не существует, относительноbody
элемента, то есть относительно окна браузера.
- Модель слоя -- относительное позиционирование (относительно исходного положения)
Относительное позиционирование — очень простая для понимания концепция. Если вы расположите элемент относительно, он появится там, где он есть. Затем этот элемент можно переместить «относительно» к его начальной точке, установив его вертикальное или горизонтальное положение.
#box_relative {
position: relative;
left: 30px;
top: 20px;
}
Как показано ниже:
Если вы хотите установить относительное позиционирование в модели слоя для элементов, вам нужно установить
position:relative
(относительное позиционирование), он проходитleft、right、top、bottom
Атрибут определяет положение смещения элемента в обычном потоке документов. Процесс взаимного позиционирования завершается первым нажатиемstatic(float)
способ сгенерировать элемент (и элемент плавает как слой), а затем двигаться относительно исходного положения, направление и величина движения определяютсяleft、right、top、bottom
Свойство определено, а положение перед смещением остается неизменным.
- Модель слоя -- фиксированное позиционирование (относительно веб-окна)
position:fixed
и
absolute
Тип позиционирования аналогичен, но координатами его относительного перемещения является сам вид (окно веб-страницы на экране). Поскольку само представление является фиксированным, оно не изменяется с помощью полосы прокрутки окна браузера, если только вы не перемещаете положение экрана окна браузера по экрану или не изменяете размер отображения окна браузера, поэтому фиксированно расположенный элемент будет всегда находиться в позиции A представления в окне браузера, на которое не влияет поток документа, что совпадает сbackground-attachment:fixed
Свойства функционируют одинаково.
стиль браузера по умолчанию
- Поля
IE
По умолчанию10px
,пройти черезbody
изmargin
настройки свойств
Чтобы очистить поля, обязательно очистите эти два значения свойства.
body { margin:0; padding:0;}
- расстояние между сегментами
IE
По умолчанию19px
,пройти черезp
изmargin-top
настройки свойств
p
По умолчанию отображается блок. Чтобы очистить интервал между сегментами, обычно можно установить
p { margin-top:0; margin-bottom:0;}
html5
Преимущества HTML5
- Решение кроссбраузерных и кроссплатформенных проблем
- улучшен
web
приложение
Устаревшие элементы HTML5
frame frameset noframes
acronym applet dir
basefont big center font strike tt
Новые элементы HTML5
<header> 用于定义文档或节的页眉
<footer> 用于定义文档或节的页脚
<article> 用于定义文档内的文章
<section> 用于定义文档中的一个区域(或节)
<aside> 用于定义与当前页面或当前文章的内容几乎无关的附属信息
<figure> 用于定义一段独立的引用,经常与说明(caption)<figcaption>配合使用,通常用在主文中的图片,代码,表格等。
<figcaption> 用于表示是与其相关联的引用的说明/标题,用于描述其父节点<figure>元素里的其他数据。
<hgroup> 用于对多个<h1>~<h6>元素进行组合
<nav> 用于定义页面上的导航链接部分
<mark> 用于定义高亮文本
<time> 用于显示被标注的内容是日期或时间(24小时制)
<meter> 用于表示一个已知最大值和最小值的计数器
<progress> 用于表示一个进度条
<audio> 定义声音,比如音乐或其他音频流
<video> 定义视频,比如电影片段或其他视频流
Элементы и атрибуты формы HTML5
input新增type类型
color 用来创建一个允 许用户使用颜色选择器,或输入兼容 CSS 语法的颜色代码的区域
time 生成一个时间选择器
datetime 生成一个 UTC 的日期时间选择器
datetime-local 生成一个本地化的日期时间选择器
date 显示一个日期输入区域,可同时使用日期选择器,结果值包括年、月、日,不包括时间。
month 生成一个月份选择器,它结果值包括年份和月份, 但不包括日期
week 生成一个选择的几周的选择器
email 生成一个 E-mail 输入框
number 生成一个只能输入数字的输入框
range 生成一个拖动条,通过拖动条,使得用户只能输入指定范围,指定步长的值
search 生成一个专门用于输入搜索关键字的文本框
tel 生成一个只能输入电话号码的文本框
url 生成一个 URL 输入框
HTML5 input新增属性
placeholder 主要用在文本框,规定可描述输入字段预期值的简短的提示信息
autocomplete 为了完成表单的快速输入,一般浏览器提供了自动补全的功能选择
autofocus 当为某个表单控件增加该属性后,当浏览器打开这个页面, 这个表单控件会自动获得焦点
list 为文本框指定一个可用的选项列表,当用户在文本框中输 入信息时,会根据输入的字符,自动显示下拉列表提示,供用户从中选择
pattern 用于验证表单输入的内容,通常 HTML5 的 type 属性,比如 email、tel、 number、url 等,已经自带了简单的数据格式验证功能了,加上 pattern 属性后, 验证会更加高效
novalidate 当提交表单时不对其进行验证
required 必需在提交之前填写输入字段
spellcheck 拼写检查,为<input>、<textarea>等元素新增属性
formenctype 规定在发送到服务器之前应该如何对表单数据进行编码
formtarget 带有两个提交按钮的表单,会提交到不同的目标窗口
multiple 一次上传多个文件
maxlength wrap <textarea>新增<br />maxlength:用于规定文本区域最大字符数。<br />wrap:是否包含换号符(soft/ hard)
css3
Новые селекторы CSS3
- селектор брата
元素 1 ~ 元素 2
После первого элемента будут выбраны все элементы 2, и эти элементы и первый элемент имеют один и тот же родительский элемент (два элемента не обязательно должны быть соседними).
- селектор атрибутов
-
E[attribute^=value]
Используется для выбора элементов со значениями атрибутов, начинающимися с указанного значения -
E[attribute$=value]
Используется для выбора элементов, значение атрибута которых заканчивается указанным значением -
E[attribute*=value]
Используется для выбора элемента, который содержит указанное значение в значении атрибута, позиция не ограничена, и все слово не ограничено
- Селектор псевдокласса
-
:root
Всегда выбирает корневой элемент документа в HTML<html>
элемент -
:last-child
Добавьте стили к элементу, который является последним дочерним элементом его родителя -
:nth-child(n)
Добавляет стили к элементу, который является n-м потомком своего родителя -
:nth-last-child(n)
Добавляет стили к элементу, который является n-м последним дочерним элементом своего родителя. -
:only-child
Добавьте стили к элементу, который является единственным потомком своего родителя -
:first-of-type
Добавьте стиль к элементу, который является первым элементом того же типа на том же уровне. -
:last-of-type
Добавьте стиль к элементу, который является последним элементом того же типа на том же уровне. -
:nth-of-type(n)
Добавляет стиль к элементу, который является n-м элементом того же типа на том же уровне. -
:nth-last-of-type(n)
Добавляет стиль к элементу, который является предпоследним элементом того же типа. -
:only-of-type
Добавьте стиль к элементу, который является единственным элементом того же типа в том же классе. -
:empty
Добавляйте стили к элементам без дочерних элементов (включая текстовое содержимое)
- Селектор псевдоэлементов
-
:enabled
Добавляйте стили к доступным в данный момент элементам, обычно используемым для определения стилей форм или гиперссылок. -
:disabled
Добавляйте стили к элементам, которые в настоящее время недоступны, обычно используются для определения стилей для форм или гиперссылок. -
:checked
Добавить стили к текущему выбранному элементу -
:not(selector)
неselector
элемент элемента добавить стиль -
:target
Добавьте стили к посещаемому целевому элементу привязки -
::selection
Добавьте стиль к элементу, где находится текущий выбор пользователя.
Новые свойства CSS3
- Добавлено свойство фона
-
background-clip
Установить фоновое покрытиеborder-box/paddingbox/content-box
-
background-origin
Установите начальную точку наложения фонаborder-box/paddingbox/content-box
-
background-size
Установить размер фонаcover/contain/长度/百分比
- Новые свойства шрифта, связанные с текстом
-
text-overflow
Устанавливает, что делать, когда текст выходит за пределы поля элементаclip/ellipsis
-
word-wrap
Определяет способ переноса словаnormal/break-word
-
word-break
Указывает метод автоматического переноса строкnormal/break-all/keep-all
- Добавлены свойства блочной модели
-
box-shadow
теньh-shadow v-shadow <br />blur spread color inset
-
resize
изменить размерnone/both/horizontal
-
outline-offset
Смещение контураlength/inherit
Добавлены свойства анимации деформации
transform
translate(x,y)
rotate(angle)
scale(x,y)
skew(angleX ,angleY)
transform-origin
Указывает центр вращения элемента, значение по умолчанию50% 50%。
-
Первое значение указываетГоризонтальное положение центральной точки вращения элемента, он также может назначить
left、right、center
, длина, процент -
Второе значение указываетВертикальное положение центральной точки вращения элемента, он также может назначить
top、bottom、 center
, длина, процент.
Свойства трехмерной деформации
-
transform 3D
функция
transform
Добавлены три функции деформации:
-
rotateX
: указывает, что элемент находится вдольx
поворот оси. -
rotateY
: указывает, что элемент находится вдольy
поворот оси. -
rotateZ
: указывает, что элемент находится вдольz
поворот оси.
-
transform-style
Используется для установки вложенных дочерних элементов в3D
Эффект отображения в пространстве. -
perspective
Установите эффект перспективы, эффект перспективы будет почти большим и очень маленьким. -
perspective-origin
настраивать3D
элемент основан наx
ось иy
ось, изменение3D
Нижняя позиция элемента, значение этого атрибута такое же, какtransform-origin
, значение по умолчанию50% 50%。
-
backface-visibility
Когда используется для установки лицевой стороны, экран виден, когда задний элемент обычно используется для установки, чтобы пользователь не хотел видеть заднюю часть вращающегося элемента.
Его значения свойствvisible
(видно сзади, по умолчанию),hidden
(сзади не видно) два.
Свойства перехода CSS3
-
transition-delay
Установите время задержки для перехода -
transition-duration
Установите время перехода для перехода -
transition-timing-function
Установите временную кривую перехода -
transition-property
какой установитьCSS
использовать переход -
transition
Одно объявление устанавливает все свойства перехода
Свойства анимации CSS3
animation
-
@keyframes
Определить селектор анимации -
animation-name
использовать@keyframes
определенная анимация -
animation-delay
Установить продолжительность анимации -
animation-timing-function
Установите временную кривую анимации -
animation-iteration-count
Установите количество воспроизведений анимации -
animation-direction
Установите анимацию для воспроизведения в обратном порядке -
animation-play-state
Установить состояние воспроизведения анимации -
transition
Одно объявление устанавливает все свойства анимации
CSS3 добавляет многоколоночные свойства
-
column-count
Устанавливает количество столбцов, по которым элементы должны быть разделены -
column-width
Установить ширину столбца -
columns
Оператор устанавливает ширину столбца и количество столбцовcolumn
-
column-gap
Установите интервал между столбцами -
column-span
Устанавливает количество столбцов, которые должен охватывать элемент -
column-rule-style
Стиль пространства между столбцами -
column-rule-color
Установите цвет пространства между столбцами -
column-rule-width
Установить ширину промежутка между столбцами -
column-rule
Оператор устанавливает все свойства между столбцами
Новые юниты CSS3
px、em、rem、vh、 vw和%
подвижная единица длины
Используйте единицы CSS
px、em、rem、vh、 vw
и т. д. для достижения макета страницы.
-
px
: абсолютная единица измерения, страница отображается в точных пикселях. -
em
: Относительная единица измерения, опорной точкой является размер шрифта родительского узла, если он определен сам по себе.font-size
Вычисляется сам по себе (шрифт браузера по умолчанию16px
), на всей странице1em
не фиксированное значение.
em
Он будет меняться в зависимости от размера родительского элемента, но если несколько элементов вложены друг в друга, легко ошибиться в вычислении его размера, что приведет кrem
.
-
rem
: относительная единица, которую можно понимать как”root em”
, относительно корневого узлаhtml
вычислить размер шрифтаCSS3
Добавлены свойства. -
%
:%
процент, относительная единица длины, процентное значение относительно родительского элемента -
vw、vh、vmin、vmax
В основном используется для макета размера окна просмотра страницы
vw:viewpoint width
, ширина окна,1vw
равно ширине окна1%。
vh:viewpoint height
, высота окна,1vh
равна высоте окна1%。
-
vmin:vw
иvh
Меньший. -
vmax:vw
иvh
Чем больше.
Модель Flexbox
Основные грамматические понятия модели Flexbox
Любой контейнер может указать гибкую компоновку
JavaScript
Основы JavaScript
- внешний импорт
js
файл: пройти<script src="main.js"></script>
- Ключевые слова
- Имена переменных чувствительны к регистру
- Соглашения об именах
Типы данных JavaScript
- нить
(String)
- номер
(Number)
- Логическое значение
(Boolean)
- неопределенный
(Undefined)
//undefined有两种结果
//1、真的没定义
alert(typeof dada); //undefined
//2、定义了,但是没有放东西进去
var dada;
alert(dada); //undefined
undefined
, что означает, что переменная не определена или только объявлена без значения
- объект
(Object)
js
Встроены следующие объекты:
-
Object
Является суперклассом (базовым классом) всех объектов JS, все объекты в JS наследуются от объектов Object. -
Array
Объекты массива определяют свойства и методы массива -
Number
цифровой объект -
Boolean
Логический объект Логический объект -
Error
ошибка обработчика объекта ошибки -
Function
Объект функции Определить свойства и методы функции -
Math
математические объекты -
Date
объект даты -
RegExp
Объект Объект регулярного выражения Определяет сопоставление текста и правила фильтрации -
String
Строковые объекты определяют строковые свойства и методы.
арифметические операции
var y = 3;
В ролях
- Строка в число
parseInt() parseFloat() isNaN()
- Преобразование чисел в строки
toString()
оператор присваивания
- составной оператор присваивания
+= -= *= /= %=
реляционные операции
- Реляционные операции:
> < <= >= != == === ==和=== !=和!==
“=”、“==”、“===”
Какая разница?
-
=
это символ присваивания -
==
Игнорировать, равен ли тип данных или нет -
===
Значения и типы данных должны быть равны, чтобы считаться равными
логическая операция
- логический и
&&
- логический или
||
- логическое не
!
- Составные логические выражения
Тернарная операция
条件运算符?:
三元运算符:(比较表达式)?结果1:结果2
ответвление петли
Три структуры работы программы:Структура последовательности, структура выбора, структура цикла
- Выбор одной ветки:
if
утверждение - Вариант с двумя ответвлениями:
if-else
утверждение - Многоотраслевое заявление:
if-else if-else
утверждение
switch
формат синтаксиса
switch(num){ //表达式
case 1:
//执行代码块1
break; //中断执行,跳出
...
default: //默认,其他都不是的情况下执行
//执行代码块
break;
}
//强调:break非常重要,如果不加break的话,程序会一直继续往下执行;
while
Формат синтаксиса:
while
Характеристики цикла: когда не известно количество конкретных исполнений, лучше всего использовать
while(条件表达式){
//要重复执行的代码段 - 循环体
}
do-while
Формат синтаксиса:
do{
//循环体
}while(循环条件判断);
-
do-while
Сначала выполняется тело цикла, а затем проверяется условие цикла. -
do-while
Тело цикла гарантированно выполнится хотя бы один раз. - Другие циклы не гарантируют, что цикл будет выполнен хотя бы один раз.
for
for(1循环变量初始化;2循环条件判断;4循环变量的修改){
3循环体
}
прерваться и продолжить
-
break
выйти из цикла -
continue
Пропустить этот цикл и перейти к следующему циклу
множество
- определение массива
var arr = new Array();
var arr = [];
- буквальное определение
var arr = ["1","2"];
- присвоить значение массиву
arr[0] = "1";
arr[1] = "2";
alert(arr[0]+","+arr[1]);
- индекс массива
arr[0]+","+arr[1]
- длина массива
//语法
arr.length
//最后一个元素的索引
arr.length-1
метод массива
indexOf
массивы могут бытьindexOf()
для поиска позиции указанного элемента, если не найден, вернуть-1
concat
concat()
Метод объединяет текущий массив с другим массивом и возвращает новый массив
var newArr = arr1.concat(arr2,"dada");
push和pop
push()
добавить несколько элементов в конец массива,pop()
удалить последний элемент массива
arr.push("a","b");
console.log(arr);
arr.pop();
console.log(arr);
//空数组继续pop不会报错,而是返回undefined
unshift和shift
unshift()
Добавьте несколько элементов в начало массива,shift()
удалить первый элемент массива
arr.unshift("a","b");
arr.shift();
slice
slice()
Взять часть массива и вернуть новый массив
console.log(arr.slice(0,3)); //从索引0开始,到索引3结束,但不包括3
console.log(arr.slice(3)); //从索引3开始到结束
если не дано
slice()
Передача любого параметра приведет к обрезанию всех элементов от начала до конца. Воспользовавшись этим, легко скопировать новый массив
sort
sort()
может сортировать текущий массив
var arr = ["b","c","a"];
arr.sort();
arr;//["a","b","c"]
reverse
reverse()
удалить элементы всего массива
join
join()
Метод объединяет каждый элемент массива с указанной строкой
var arr = ["a","b","c"];
arr.join("-"); //"a-b-c"
splice
Вы можете удалять элементы, начиная с указанного индекса, а затем добавлять элементы из этой позиции.
Двумерный массив
var arr = [[1,2,3],["a","b","c"],"dadaqianduan"];
var x = arr[1][1]; //b
нить
- Строковое свойство
length
- свойство длины строки slice()
slice(start[,end]),start--开始索引 end--结束索引
substr()
substr(start[,length]),start:开始,取length个字符
split()
split([separator[,limit]])
, разбить строку по условию, вернуть массив
indexOf()
первое вхождение в родительской строке, начиная с0
Начинать! без возврата-1
lastIndexOf()
Поиск в обратном порядке
charAt(index)
charAt(index)
символ по указанному индексу
toLowerCase()
нижний регистр
toUpperCase()
верхний регистр
регулярное выражение
Создание регулярных выражений
var reg = new RegExp("a","i");
// 将匹配字母a,第二个参数i,表示匹配时不分大小写
метасимвол
модификатор шаблона
обычный метод
-
test
метод
Извлекает значение, указанное в строке.
-
exec
метод
Этот метод используется дляПолучить совпадения регулярного выражения в строке, функциявернуть массив, в котором хранятся результаты сопоставления. Если совпадений не найдено, возвращается значениеnull
.
Поддержка обычных методов String
js-объект
определить объект
//使用new运算符
var obj = new Object();
//字面量
var obj={
name:"dadaqianduan",
age:12,
sex:"男"
}
доступ к данным объекта
//用.语法
obj.name
//用[]语法
obj["name"]
JSON
json(JavaScript Object Notation)
, представляет собой облегченный формат обмена данными.
var man = {
"name":"dadaqianduan",
"age":12,
"sex":"男"
};
встроенные объекты
-
Object
Является суперклассом (базовым классом) всех объектов JS, все объекты в JS наследуются от объектов Object. -
Array
объект массива -
Number
цифровой объект -
Boolean
логический объект -
Error
объект ошибки -
Function
функциональный объект -
Math
математические объекты -
Date
объект даты -
RegExp
объект объект регулярного выражения -
String
строковый объект
Математический метод
-
abs()
Абсолютное значение (удаление положительных и отрицательных) -
random()
случайный номер,0-1
случайные числа между,1
не появляются -
round()
округление -
floor(x)
округлить (округлить вниз) -
ceil(x)
округлить (округлить) -
max(x,y)
x 和 y
максимальное значение в -
min(x,y)
x 和 y
минимальное значение в -
cos(x)
x
косинус -
sin(x)
x
синус -
sqrt(x)
возвращениеx
квадратный корень из -
pow(3,4)
возвращение3
из4
сила
Метод даты
-
getFullYear()
год возврата (4 цифры) -
getMouth()
Месяц возврата (0--11) -
getDate()
Дата возврата -
getDay()
Назад к неделе (0-6) -
getHours()
назад часы -
getMinutes()
Вернуться через несколько минут -
getSeconds()
вернуть секунды -
getTime()
Возвращает количество миллисекунд с полуночи 1 января 1970 года до указанной даты (строка). -
setFullYear()
установить год -
setMouth()
установить месяц -
setDate()
установить день -
setHours()
установить час -
setMinutes()
установить минуты -
setSeconds()
установить секунды -
setTime()
Установите объект времени в миллисекундах
//判断闰年
function runYear(year){
if(year%4==0 && year%100!=0 || year%400==0){
return true;
}
};
Объектная ориентация — это идея программирования
- Класс - это абстрактное понятие.
- Объект: конкретная вещь
- Класс — это абстракция объекта, а объект — это конкретный экземпляр класса.
- Классы не занимают память, объекты занимают место в памяти
- Доступ к объектам Объявление объектов
- Итерации над объектами -
for in
цикл
определить объект
- буквальное создание
- Заводская выкройка
// 工厂模式中的函数,首字母大写
function Cat(n,c){
return {
name:n,
color:c,
say:function(){
alert("dadaqianduan")
}
}
}
- Конструктор
Javascript
предоставляет конструктор(Constructor)
модель.
Так называемый "конструктор" на самом деле обычная функция, но она используется внутри.this
Переменная.
использовать в конструктореnew
оператор, экземпляр может быть сгенерирован, иthis
Переменные привязаны к объектам экземпляра.
Сделать заглавной первую букву конструктора
в конструктореthis
, указывая на созданный объект
function Cat(n,c){
this.name=n;
this.color=c;
}
создать объект экземпляра
var cat1 = new Cat("dadaqianduan","黄色")
// 自动含有一个constructor属性,指向它们的构造函数
Пример: автоматически содержит
constructor
свойства, указывая на их конструкторы
alert(cat1.constructor == Cat); //true
-
Javascript
также обеспечиваетinstanceof
оператор
Проверьте взаимосвязь между объектом-прототипом и объектом-экземпляром.
var txt = 'dadaqianduan';
alert(txt instanceof String); //false
var age = 123123;
alert(age instanceof Number); //false
var res = /\d/;
alert(res instanceof RegExp); //true
var arr = [];
alert(arr instanceof Array); //true
Прототипы и цепочки прототипов
В конструкторе есть
prototype
свойство, указывающее на другой объект. весь этот объектсвойства и методы, будет унаследован экземпляром конструктора.
Все функцииFunction
пример.
В конструкторе есть свойство прототипаprototype,prototype
также является объектом; этот объект имеетconstructor
свойство, которое указывает на конструктор.
объект экземпляра имеет_proto_
свойство, это свойство также указывает на объект-прототип, это свойство не является стандартным свойством и не может использоваться в программировании, это свойство используется внутри браузера.
constructor
-
constructor
Является свойством экземпляра, созданного конструктором, которое используется для указания на конструктор, создавший текущий объект.
son.constructor == parent; // true
Каждый прототип имеетconstructor
Свойство, указывающее на связанный конструктор.
function Person() {
}
console.log(Person===Person.prototype.constructor) //true
диаграмма отношений:
Различать обычные объекты и функциональные объекты
function f1(){};
var f2 = function(){};
var f3 = new function(){};
var o1 = {};
var o2 = new Object();
var o3 = new f1();
console.log(typeof Object); //function
console.log(typeof Function);//function
console.log(typeof f1) //function
console.log(typeof f2) // function
console.log(typeof f3) //function
console.log(typeof o1) //object
console.log(typeof o2) //object
console.log(typeof o3)// object
- существует
JavaScript
В , прототипом является объект, а роль прототипа заключается в реализации наследования объектов. - существует
JavaScript
Во всех функциональных объектах в , есть атрибут,prototype
, что соответствует прототипу текущего объекта. - все
JavaScript
объект, есть_proto_
Атрибуты,_proto_
Свойство указывает на прототип конструктора объекта экземпляра.
var p = new Person(); // 实例对象
console.log(p._proto_ === Person.prototype); // true
p
является экземпляром объекта,Person
даp
конструктор.p
из_proto_
свойство указывает на конструкторPerson
Прототип.
js
Как наследовать от прототипа:
var parent = function(name) {
this.name = name;
}
parent.prototype.getName = function() {
return this.name;
}
var son = new parent("dadaqianduan");
console.log(son.getName()); // dadaqianduan
son
наследоватьparent
свойства функции в прототипеgetName
Сеть прототипов
Кроме
Object
изprototype
Прототипnull
Кроме того, все объекты и прототипы имеют свои собственные прототипы, а прототип объекта указывает на объект-прототип.
В многоуровневых отношениях несколько прототипов соединяются слой за слоем, образуя цепочку прототипов.
При поиске свойства объекта, если текущий объект не может найти свойство, он будет искать цепочку прототипов, пока не найдет его.Если он достигает вершины цепочки прототипов и не может его найти, он возвращаетundefined
прототип
- Все ссылочные типы имеют
__proto__
Атрибуты - Все функции имеют
prototype
Атрибуты - все ссылочные типы
__proto__
свойство указывает на его конструкторprototype
Связь между конструктором и прототипом экземпляра:
Person
(конструктор) изprototype
направлениеPerson.prototype
__proto__
любой объект, кромеnull
Кроме того, существуют свойства, называемые__proto__
, это свойство будет указывать на прототип объекта.
function Person() {
}
var person = new Person();
console.log(person.__proto__ === Person.prototype); // true
диаграмма отношений:
диаграмма отношений:
диаграмма отношений:
Кардочесание:
написать конструкторPerson
, разница между общими конструкторами и обычными функциями требует, чтобы первая буква была заглавной:
function Person(){}
prototype
прототип
Прототип – это объект, прототип которогоprototype
Свойства, определенные выше, посредством «наследования», экземпляр реализации также имеет это свойство.
наследование находится вnew
Оператор реализован внутри.
Внутри конструктора есть
prototype
свойство, через которое можно получить доступ к прототипу.
Person
является конструктором,Person.prototype
является прототипом.
- пример
Существуют конструкторы, которые могут создавать наследуемые свойства прототипа черезnew
оператор для создания экземпляра:
function Person(){}
person = new Person()
da = person instanceof Person // 检查person是否是Person的实例
da // true
// 继承
function Person() {}
Person.prototype.name = 'dadaqianduan.cn'
person = new Person()
da = person.name // 实例继承的属性
da // 'dadaqianduan.cn'
proto
экземпляр передан_proto_
Доступ к прототипу.
function Person() {}
Person.prototype.name = 'dadaqianduan.cn'
person = new Person()
da = person.__proto__ === Person.prototype
da // true
-
constructor
Конструктор
Прототипы также могут быть
constructor
доступ к конструктору
function Person() {}
Person.prototype.name = 'dadaqianduan.cn'
person = new Person
da = Person.prototype.constructor === Person
da // true
резюме
- Все ссылочные типы (функции, массивы, объекты) имеют
__proto__
Атрибуты. - Все функции имеют
prototype
Атрибуты. - Каждый экземпляр объекта (
Object
) имеет частную собственность, т.__proto__
указатель на объект-прототип его конструктора (prototype
). Объект-прототип также имеет собственный объект-прототип.__proto__
, слой за слоем, пока не появится объект, объект-прототип которогоnull
,null
Прототипа нет, и это последнее звено в этой цепочке прототипов.
Общие шаблоны проектирования JavaScript
Энциклопедия Байду:
Шаблоны проектирования(Design pattern)
Это набор многократного использования, известный большинству людей, классифицированный и каталогизированный, а также резюме опыта разработки кода.
Использование шаблонов проектирования предназначено для повторного использования кода, облегчения его понимания другими и обеспечения надежности кода. Нет никаких сомнений в том, что шаблоны проектирования беспроигрышны для нас самих, других и систем; шаблоны проектирования делают программирование по-настоящему инженерным; шаблоны проектирования являются краеугольным камнем разработки программного обеспечения, точно так же, как структура здания.
Монолитный режим
Монолит — это объект, который разделяет пространство имен и объединяет набор связанных свойств и методов, и если он может быть создан, он может быть создан только один раз.
Функции:
(1) можно разделить наПространства имен, устраняя тем самым опасность, которую представляют собой глобальные переменные.
(2) Используйте технологию ветвления для инкапсуляции различий между браузерами.
(3) Это может сделать кодовую организацию более удобной для чтения и обслуживания.
Заводская выкройка
Определение фабричного шаблона:
Предоставляет интерфейс для создания объектов, что означает производство соответствующих продуктов (объектов) по заданию (параметрам) ведущего (вызывающего).
- Для создания объекта часто требуются сложные процедуры, поэтому он не подходит для сложного объекта.
- Создание объектов может привести к большому количеству повторяющегося кода или может не обеспечить достаточный уровень абстракции.
Фабрика должна передать создание объекта-члена внешнему объекту, а преимущество состоит в устранении связи (то есть взаимного влияния) между объектами.
Классификация:
Простой заводской шаблон: Используйте класс, обычно одноэлементный, для создания экземпляров.
Комплексное определение заводского шаблона: передать экземпляр своих объектов-членов в подкласс, и подкласс может переопределить метод интерфейса родительского класса, чтобы указать свой собственный тип объекта при его создании.
Родительский класс обрабатывает только общие проблемы в процессе создания, которые будут унаследованы подклассами, а подклассы независимы друг от друга, и в подклассах будет прописана конкретная бизнес-логика.
Сценарии применения:
Фабричный шаблон особенно полезен в следующих сценариях:
(1) конструкция объекта очень сложна;
(2) Необходимо создавать разные экземпляры в зависимости от конкретной среды;
(3) Работа с большим количеством мелких объектов с одинаковыми свойствами.
одноэлементный шаблон
Шаблон singleton определяет создание объекта с одним экземпляром и предоставляет к нему глобальную точку доступа. Можно также сказать, что синглтон должен гарантировать, что класс имеет только один экземпляр.Метод реализации обычно заключается в том, чтобы сначала определить, существует ли экземпляр или нет, и если он существует, он будет возвращен напрямую.Если он не существует , он будет создан, а затем возвращен, что гарантирует наличие в классе только одного экземпляра объекта.
Используйте замыкания для реализации синглтонов:
var single = (function(){
var unique;
function getInstance(){
// 如果该实例存在,则直接返回,否则就对其实例化
if( unique === undefined ){
unique = new Construct();
}
return unique;
}
function Construct(){
// ... 生成单例的构造函数的代码
}
return {
getInstance : getInstance
}
})();
unique
является ссылкой на возвращаемый объект, иgetInstance
является статическим методом для получения экземпляра.Construct
это конструктор, который создает экземпляр.
в состоянии пройтиsingle.getInstance()
чтобы получить синглтон и звонить каждый разполучить тот же синглтон. Этоодноэлементный шаблондостигнутый эффект.
Сценарии применения:
- Одноэлементный шаблон является широко используемым шаблоном. Для некоторых объектов нам часто нужен только один, например, глобальный кеш,
window
объект. - С помощью одноэлементного шаблона код может быть организован более последовательно, его легко читать и поддерживать.
функция
определение функции
// 使用关键字function 定义函数
// 定义函数,吃饭
function dada(){
console.log("点餐");
console.log("拿筷子");
console.log("吃东西");
}
локальные и глобальные переменные
- переменная область видимости
- Переменные внутри тела функции:локальная переменная, может использоваться только в теле функции
- Переменные вне функции:глобальная переменная, видимый глобально
- локальная переменная
function da(){
var dadada = "dada";//局部变量
alert(dadada);
}
da(); //调用
alert(dadada); //报错访问不到,函数体外对dadada不可见
- глобальная переменная
var da = "我是全局变量";
function home(){
var da = "我是局部变量";
alert(da);
}
home();
-----------------------
var a=3; //全局
function da(){
alert(a); //3
var b=5;
alert(b);//5
}
da();
console.log(b); //报错,访问不到
Типичная ошибка, не используйтеvar
Объявленная переменная также является глобальной переменной (это не рекомендуется)
function dada(){
da = "123"; //全局变量
}
dada();
alert(da);
возвращаемое значение
return
значение
//理解返回值
function getNum(){
return 2; //return的作用,将函数的结果返回给当前函数名
}
var result = getNum(); //如果希望返回值保存,就放在变量中;
console.log(result); //2
return
инструкции
-
return
Могут быть возвращены только одни данные - Если функция не имеет
return
, затем вернутьсяundefined
return
Может использоваться для завершения функции
function Fun(){
console.log("helloweb");
return;
console.log("我还会执行吗?");
}
Fun();
function fn(){
for(var i=0;i<10;i++){
if(i == 3){ //循环3次就return
break;
}
console.log("谁最帅!"); //打印3次
}
return "看return会不会执行我"; //return不执行,break执行
}
анонимная функция
//使用函数表达式定义函数
//say本质上是一个指向函数对象的变量,我们称为函数变量
var say = function(){
console.log("hello");
};
say();
var oBtn = document.getElementById("box");
oBth.onclick = function(){
alert("你点击我啦");
}
автономная функция
Пример:
function fn(){
//这里是代码
}
fn(); //运行fn函数
----------------------
var fn = function(){
//这里是代码
}
fn(); //运行fn函数
---------------------
//(fn)() 等价于 fn()
(function(){
//这里是代码
})()
Закрытие
Закрытие(closure)
иметь доступ к другомуПеременная в области видимости функцииФункция.
Общие способы создания замыканий:
- Создайте другую функцию внутри функции и поместите эту функцию
return
выйти. - Используйте функцию для привязки события к элементу, и когда событие происходит, вы также можете манипулировать переменными в функции.
характеристика
- Может читать переменные внутри других функций
- сохранить значения этих переменных в памяти
Пример:
//方式1----函数内部return一个函数
function run(){
var a=10;
return function(){
a++;
console.log(a);
};
};
var b=run();
//alert(b); //b是一个函数
b();//可以访问另外一个作用域中变量的函数
//方式2--函数内部为绑定事件
function addClick(){
var txt="abcd";
document.getElementById('box').onclick=function(){
alert(txt);
}
};
addClick();
//方式3--函数内部将变量作为回调函数的参数
function play(num,fn){
if(num>10){
return fn && fn(num);
};
};
var ss=play(20,function(n){
return n+1;
});
console.log(ss);
BOM
Обзор спецификации
BOM(browser object model)
Объектная модель браузера
BOM
при условииОбъект, взаимодействующий с окном браузера независимо от его содержимого., Загрузка информации, связанной со страницей, ее основным объектом являетсяwindow
объект
BOM
Соответствующего стандарта нет, каждый браузер определяет свои свойства, и каждый браузер имеет свои собственныеBOM
выполнение
W3C
Хотя не дляBOM
Стандарт сформулирован единообразно, но оконные объекты, объекты навигации и т. д. фактически стали стандартами по умолчанию из-за конвергенции функций.
оконный метод
-
alert()
Подсказка -
confirm()
Подсказка с кнопкой подтверждения отмены -
prompt()
Подсказка с текстовым полем для ввода -
setInterval()
Интервальный таймер, который вызывает функцию или оценивает выражение в указанный период (в миллисекундах) -
setTimeout()
Таймер тайм-аута, который вызывает функцию через определенное количество миллисекунд. -
clearInterval()
Очистить интервальный таймер -
clearTimeout()
очистить таймер тайм-аута -
requestAnimationFrame
кадровый таймер
frames [ ]
набор фреймов
Разделите окно браузера на несколько оконных рамок, и каждая оконная рама одновременно получит несколькоURL
адрес для отображения содержимого различных веб-страниц.
история история
-
window.history.go(1)
вперед (прыжок) -
window.history.go(-1)
назад (прыжок) -
window.history.forward()
вперед, продолжать -
window.history.back()
назад
позиционирование местоположения
-
window.location.href='http://www.baidu.com/'
прыжок страницы -
window.location.reload()
перезагрузка страницы
навигатор навигация
window.navigator.userAgent
Тип браузера, версия, тип операционной системы, тип движка браузера и т. д.
экран
window.screen.width
Возвращает текущую ширину экрана (значение разрешения)window.screen.height
Возвращает текущую высоту экрана (значение разрешения)
документ документ
window
изdocument
свойства, представляющие всеhtml
элемент, эта частьjs
Часть основной операции, поэтому эта часть должна быть стандартизирована для унифицированной разработки. следовательно,W3C
Эта часть стандартизирована ---DOM
стандарт.
DOM
DOM(document object model )
Объектная модель документа, которая определяет объекты, поведение и свойства, необходимые для представления и изменения документов, а также отношения между этими объектами.
Методы объекта DOM
-
getElementById(id)
пройти черезid
ПолучатьDOM
Объект Object) -
getElementsByTagName(tag)
Получить по тегуDOM
объект ("массивоподобный" объект) -
getElementsByName(name)
пройти черезname
ПолучатьDOM
объект ("массивоподобный" объект) -
getElementsByClassName(class)
пройти черезclass
ПолучатьDOM
Объект (не поддерживается ниже IE8)
Управление отношениями между DOM
-
createElement(tag)
создать элемент -
removeChild(对象)
удалить элемент -
appendChild(对象)
вставить элемент -
replaceChild(替换对象,被替换对象)
заменить элемент -
insertBefore(对象,目标对象)
передняя вставка
appendChild replaceChild insertBefore
Оба имеют возможность перемещать объекты
Свойства узла:
父节点 parentNode
第一级所以子节点 childNodes
第一个子节点 firstChild
最后一个子节点 lastChild
前一个兄弟节点 previousSbiling
后一个兄弟节点 nextSibling
Клонировать узел:
cloneNode( 布尔值 )
true:复制本节点以及所有子节点
false:只复制节点本身
Свойства узла DOM
-
setAttribute("属性名",属性值)
установить свойства -
getAttribute( 属性名 )
получить атрибут -
removeAttribute( 属性名 )
Удалить атрибут: -
hasAttributes(属性名)
Проверить, существует ли атрибут (вернутьture/false
)
событие
var oDiv=document.getElementById('box');
oDiv.onclick=function(){
alert('hello world');
};
-
addEventListener( )
Добавить прослушиватель событий -
removeEventListener( )
удалить прослушиватель событий
классификация событий
-
window
событие
-
onload
Загрузка (страница или изображение готовы) -
onunload
Страница выхода пользователя -
onresize
Размер окна или рамки изменен -
onscroll
событие полосы прокрутки
- событие мыши
onclick 鼠标点击
ondblclick 鼠标双击
onmousedown 鼠标按键按下
onmouseup 鼠标按键被松开
onmouseout 鼠标从某元素移开
onmouseover 鼠标被移到某元素之上
onmouseenter 鼠标进入某元素
onmouseleave 鼠标离开某元素
onmousemove 鼠标移动
oncontextmenu 右键菜单
- входное событие
onblur 元素失去焦点。
onfocus 元素获得焦点。input输入框
onchange 内容改变时触发。
- событие клавиатуры
onkeydown 按键按下
onkeypress 按键按下并释放
onkeyup 按键释放
- событие формы
onreset 表单重置(重置按钮)
onsubmit 表单提交(form内有text被聚焦,直接回车可触发onsubmit)
объект события
Получить данные о событии, разные события будут иметь разные данные
oDiv.onclick=function(ev){
//ev就是事件对象
}
поток событий
- Поведение объекта по умолчанию
- Предотвратить поведение по умолчанию:
event.preventDefaut()
поток событий
Направление потока событий:捕获 → 事件目标→冒泡
- захват событий
- цель события
- Всплывание событий и остановка всплытия событий
цель события
ev.targrt
ev.target.nodeName
ev.target.tagName
делегация мероприятия(delegate)
Принцип: привяжите событие к родителю, используйте принцип всплытия событий и инициируйте событие, привязанное к родителю, оценивая «целевой элемент» события.
эффект
- Не привязывайте события к дочерним элементам отдельно
- Привязать события для неизвестных элементов
прослушиватель событий
Вы можете привязать несколько событий к элементу одновременно
obj.addEventListener(事件,回调函数,冒泡/捕获) ;
btn.addEventListener("click",function(ev){ //ev 事件对象
alert('dadaqianduan');
},false) //false 冒泡阶段
jQuery
一款轻量级的js库
丰富的DOM选择器
简单的事件操作
重新封装方法,让操作DOM属性更简单
链式操作
丰富的动画效果
Ajax操作支持
浏览器兼容
插件扩展开发,可扩展性强
不能向后兼容
插件兼容性
多个插件冲突
Селекторы jQuery
-
id
Селектор
$('#box')
-
class
Селектор
$('.box')
- селектор тегов
$('p')
-
*
представляет все теги
селектор атрибутов
-
[attribute]
Соответствует элементам, которые содержат заданный атрибут -
[attribute=value]
Соответствует элементам, в которых данный атрибут является определенным значением -
[attribute!=value]
Соответствует элементам, в которых данный атрибут не является определенным значением -
[attribute^=value]
Соответствует элементам, в которых данный атрибут начинается с некоторого значения -
[attribute$=value]
Данный атрибут является элементом, который заканчивается некоторым значением -
[attribute*=value]
соответствует данному атрибуту как элементу, содержащему некоторое значение
выбор местоположения
:first
Соответствовать первому элементу
:last
получить последний элемент
:not
Удалить все элементы, соответствующие данному селектору
:even
Соответствует всем элементам с четным индексом, считая от 0
:odd
Соответствует всем элементам с нечетными индексами, считая от 0
:eq
соответствует элементу с заданным значением индекса
:gt
Соответствует всем элементам больше заданного значения индекса
:lt
Соответствует всем элементам меньше заданного значения индекса
селектор потомков
$("选择器1 选择器2 ……")
дочерний селектор
$("选择器1>选择器2>……")
объект селектора
$("选择器").each(function(index){this}) 选择器对象的遍历
$("选择器").find() 找前面选择器匹配到的元素的子元素
$("选择器").not() 在前面选择器匹配到的元素中去除某个或某多个
$("选择器").add() 在前面选择器中在追加节点
дочерний элемент
:first-child 匹配第一个子元素
:last-child 匹配最后一个子元素
:first-of-type 选择所有相同的元素名称的第一个兄弟元素
:last-of-type 选择所有相同的元素名称的最后一个兄弟元素
:nth-child 匹配其父元素下的第N个子或奇偶元素
:nth-last-child() 选择所有他们父元素的第n个子元素。计数从最后一个元素开始到第一个
:nth-last-of-type() 选择的所有他们的父级元素的第n个子元素,计数从最后一个元素到第一个
:nth-of-type() 选择同属于一个父元素之下,并且标签名相同的子元素中的第n个
:only-child 如果某个元素是父元素中唯一的子元素,那将会被匹配
:only-of-type 选择所有没有兄弟元素,且具有相同的元素名称的元素。
форма
:input 匹配所有 input, textarea, select 和 button 元素
:text 匹配所有的单行文本框
:password 匹配所有密码框
:radio 匹配所有单选按钮
:checkbox 匹配所有复选框
:submit 匹配所有提交按钮
:image 匹配所有图像域
:reset 匹配所有重置按钮
:button 匹配所有按钮
:file 匹配所有文件域
:hidden 匹配所有隐藏域
свойства объекта формы
:enabled 匹配所有可用元素
:disabled 匹配所有禁用元素
:checked 匹配所有选中的被选中元素
:selected 匹配所有选中的option元素
Манипуляции с DOM
- найти получить
text() - 设置或返回所选元素的文本内容
html() - 设置或返回所选元素的内容
val() - 设置或返回表单字段的值
- Вставьте внутрь
append() 向每个匹配的元素内部追加内容
appendTo() 把所有匹配的元素追加到另一个指定的元素集合中
prepend() 向每个匹配的元素内部前置内容
prependTo() 把所有匹配的元素前置到另一个、指定的元素集合中
- внешняя вставка
after() 在每个匹配的元素之后插入内容
before() 在每个匹配的元素之前插入内容
insertAfter() 把所有匹配的元素插入到另一个、指定的元素集合的后面
insertBefore() 把所有匹配的元素插入到另一个、指定的元素集合的前面
- пакет
wrap() 把所有匹配的元素用其他元素的结构化标记包裹起来
unwrap() 这个方法将移出元素的父元素。
wrapAll() 将所有匹配的元素用单个元素包裹起来
wrapInner() 将每一个匹配的元素的子内容(包括文本节点)用一个HTML结构包裹起来
- заменять
replaceWith() 将所有匹配的元素替换成指定的HTML或DOM元素
replaceAll() 用匹配的元素替换掉所有 selector匹配到的元素
- Удалить
empty() 删除匹配的元素集合中所有的子节点
remove() 从DOM中删除所有匹配的元素
- клон
clone() 克隆匹配的DOM元素并且选中这些克隆的副本
jQuery-события
загрузка страницы
$(document).ready(function(){
})
//简写方式
$(function(){
})
привязка события
$("#box").on("click",function(){
/**/
})
$("#box").off("click,mousemove");
адаптация контейнера
Есть несколько способов получить ширину и высоту элемента:
$(选择器).width() | innerWidth() | outerWidth()
$(选择器).height() | innerHeight() | outerHeight()
innerWidth()和innerHeight()是指元素里面内容的宽高加上内边距的宽高;
outerWidth()和outerHeight()是指元素里面内容的宽高加上内边距的宽高和边框;
Метод получения ширины и высоты окна выглядит следующим образом:
$(window).width()
$(window).height()
Манипуляции со стилем этикетки
$(选择器).css (样式属性名[,值]) 方法设置或返回被选元素的一个或多个样式 属性
$(选择器).addClass(类别名) 增加类别样式
$(选择器).removeClass(类别名) 去除类别样式
$(选择器).toggleClass(类别名) 交替使用类别样式:有这个类别样式就去除,没有就追加;
горка
show() 显示元素
hide() 隐藏元素
slidDown() 向下滑动显示
slideUp() 向上滑动收起隐藏
slideToggle() 交替滑动状态
fadeIn() 淡入
fadeOut() 淡出
fadeTo() 动画到指定透明度
fadeToggle() 交替淡出、淡入状态
пользовательская анимация
animate() 自定义动画
stop() 停止所有在指定元素上正在运行的动画
delay() 设置一个延时来推迟执行队列中之后的项目
finish() 停止当前正在运行的动画,删除所有排队的动画,并完成匹配元素所有的动画
AJAX
$.ajax()
$.get() 通过远程 HTTP GET 请求载入信息
$.post() 通过远程 HTTP POST 请求载入信息
$.getJSON() 通过 HTTP GET 请求载入 JSON 数据
Принцип работы
AJAX = 异步 JavaScript 和 XML
Введите в браузере
url
Когда адрес запрашивается на сервере, он передается черезAjax
Отправитьhttp
Запрос отправляется на сервер, и результат ответа службы также возвращается на сервер.Ajax
,ПервыйAjax
После обработки он возвращается в браузер для отображения страницы.
Объект XMLHttpRequest
//第一步:
xhr = new XMLHttpRequest();
//第二步
xhr.open("post","test.php");
//第三步:
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//第四步:
xhr.send("a=1&b=2");
//第五步:
xhr.onreadystatechange=function(){
if(xhr.status==200 && xhr.readyState==4){
var result=xhr.responseText;//获取到结果
alert(result);
}
}
Разница между XML и HTML
получить() и опубликовать()
$.get(url,data,callback,dataType)
$.post(url,data,callback,dataType)
AJAX
Принцип работы
Ajax
Основной формат следующий:
$.ajax({
url:'请求的资源',
type:'请求方式get|post',
data:'发送数据 名=值&名=值',
dataType:'回传值的类型',
success:function(res){ res接收返回值
}
})
HTTP
HTTP
(Протокол передачи гипертекста) — это протокол связи, который позволяет языку гипертекстовой разметки (HTML
) документация отWeb
Сервер передает в браузер клиента.
request line
Строка запроса: первая строка должна быть строкой запроса, которая описывает тип запроса, ресурс, к которому необходимо получить доступ, иHTTP
Версия.
header
Заголовок запроса: используется для описания дополнительной информации, которая будет использоваться сервером.
blank line
Пустая строка: запрашивая пустую строку между головкой и запрошенным органом, необходимо
body
Тело запроса: также называется телом запроса, вы можете добавить любые другие данные
Строка состояния:
Host 接受请求的服务器地址,可以是:IP:端口 或 域名
User-Agent 发送请求的应用程序名称(浏览器信息)
Connection 指定与连接相关的属性,如:Connection:Keep-Alive
Accept-Charset 客户端可以接受的编码格式
Accept-Encoding 客户端可以接受的数据压缩格式
Accept-Language 客户端可以接受的语言
referer 当前请求来自哪个链接(防盗连)
content-type 请求的文件类型
cookie 该网站相关的会话信息
процесс запроса URL
- Во-первых, клиент и сервер должны установить соединение.
- После установления соединения клиент отправляет серверу запрос в формате: Унифицированный идентификатор ресурса (
URL
), номер версии протокола, информацию о клиенте и, возможно, содержимое. - После того, как сервер получит запрос, он выдаст соответствующую ответную информацию в форматестрока состояния, включая информациюНомер версии протокола, код успеха или ошибки(
status Code
код состояния), за которым следуетинформация о сервере,информация о сущностии возможное содержание. - После того, как клиент получает информацию, возвращенную сервером, он отключается от сервера.
Если на одном из вышеуказанных шагов возникает ошибка, клиенту возвращается сообщение об ошибке. Для пользователя эти процессы
HTTP
Делается это самостоятельно, пользователю нужно только кликнуть мышкой и дождаться отображения информации.
Предварительная загрузка
Предварительная загрузка: заранее загружайте все необходимые ресурсы в локальный, а затем напрямую обращайтесь к ресурсам из кеша, когда они должны быть использованы.
- использовать
image
объект
<img src="" style="display:none"/>
- использовать
image
объект
var image = new Image();
image.src="";
- использовать
XMLHttpRequest
объект
xmlhttprequest.onreadystatechange=callback;
xmlhttprequest.onprogress=progressCallback;
xmlhttprequest.open("GET",http://xx.jpg,true);
xmlhttprequest.send();
function callback(){
if(xmlhttprequest.readyState=4 && xmlhttprequest.status==200){
var responseText=xmlhttprequest.responseText;
}else{
console.log("Request was unsuccessful" + xmlhttprequest.status);
}
}
function progressCallback(e){
c=e||event;
if(e.lengthComputable){
console.log("Received"+e.loaded+"of"+e.total+"bytes");
}
}
ленивая загрузка
Первая загрузка экрана, технически технология, которая будет использоваться для отображения, представляет собой ленивую загрузку изображений, то есть их загрузку в видимой области.
оптимизация производительности
Оптимизация кода JavaScript
- Разделение кода и структуры
- Разделение стиля и структуры
- Разделение данных и кода
-
AMD:Asynchronous Module Definition
, механизм асинхронной загрузки модулей. -
CMD:Common Module Definition
, общая спецификация определения модуля - экспорт
(export)
с импортом(import)
два модуля
Улучшить скорость загрузки файлов
- сливаться
JavaScript
код, используйте как можно меньшеscript
Этикетка. - загрузка без замятий
JavaScript
. - динамически созданный
script
тег для загрузки
webpack
webpack
Являетсяmodule bundler
(инструмент сборки модуля), из-заJavaScript
Сложность приложений продолжает расти, а инструменты сборки становятся все более популярными.web
Неотъемлемая часть развития. Это помогает нам упаковывать, компилировать и управлять многими файлами ресурсов и зависимыми библиотеками, необходимыми для проекта.
webpack
служба поддержкиCommonJS
,AMD和ES6
модульная система и совместима с различнымиJS
Написание спецификаций может обрабатывать зависимости между модулями, поэтому оно имеет более мощные возможности.JS
Модульная функция, она может сжимать изображения, правильноCSS、js
Файлы проверены на синтаксис, сжаты, скомпилированы и упакованы.
Особенности вебпака
- Хорошо работает для одностраничных приложений
- Также поддерживает
require()
иimport
синтаксис модуля - позволяет очень передовые
code splitting
(Разделение кода) Особенности - Горячая перезагрузка позволяет
React、Vue.js
Более быстрая локальная разработка с другими подобными фреймворками - Это, безусловно, самый популярный инструмент для сборки
Недостатки вебпака
- Неподходящий
web
разработка для новичков - за
CSS
, изображения и другие не-JS
Файлы ресурсов необходимо сначала запутать - Документация не идеальна
- Есть большие изменения, и есть большие различия в методах использования разных версий.
Установить
- Установить глобально:
//安装全局webpack
npm install webpack -g
//安装全局webpack-cli
npm install webpack-cli -g
базовое приложение веб-пакета
SPA(single page web application)
одностраничное приложение, даwebpack
Стандартные приложения упакованы
Примером состоит из нескольких основных частей:
index.html 主文件
JS文件 可能有多个JS文件,可通过webpack合并打包为一个文件
CSS文件 可能有多个CSS文件,可通过webpack合并打包为一个文件
图片 可通过webpack压缩优化
Пример:
//a.js
var run=function(){
console.log("aaa");
};
//node CommonJS模块
//module.exports.run=run;
//ES6语法
export default {run};
//b.js
var play=function(arg){
console.log(arg);
};
//node CommonJS模块
//module.exports.play=play;
//ES6语法
export default {play};
//index.js
//node CommonJS 引入js模块
//var a=require("./a.js");
//var b=require("./b.js");
//ES6 引入js模块
import a from "./a.js";
import b from "./b.js";
var txt = "hello world";
a.run();
b.play(txt);
dist
Папка (хранит упакованные файлы, их нельзя создать заранее, они могут создаваться автоматически при упаковке) -dis,dist,bulit
Бэйл:
webpack --mode development
Начало работы с профилями
Имя файла конфигурации по умолчанию:webpack.config.js
основная концепция
Базовая структура конфигурационного файла выглядит следующим образом:
//配置项
module.exports={
//入口
entry:".....",
//输出配置
output:{......},
//模块
module: {......},
//解析
resolve:{......},
//插件(数组)
plugins:[......],
//开发服务器
devServer:{......}
};
entry 入口 定义入口文件,默认入口文件:./src/index.js
output 输出 定义出口文件,默认出口文件:./dist/main.js
resolve 解析 路径映射、省略后缀名等
module 模块 定义不同loader,让 webpack 能够处理非 JavaScript 模块
plugins 插件 扩展webpack功能
devServer 开发服务器 用于配置webpack-dev-server选项
Установить автозаполнение профиля:
// webpack是基于node构建的,只支持CommonJS模块
module.exports={
//入口配置
entry:'./src/js/main.js',
//出口配置
output:{
path:__dirname +'/dist', //输出目录 __dirname:本文件所在硬盘路径(node全局变量)
filename:'js/main.js' //文件名称(可以有子目录)
}
};
Исправлятьwebpack.json
документ
существуетwebpack.json
середина"scripts"
Добавлять:
"scripts": {
"dev": "webpack --mode development",
"build": "webpack --mode production"
},
выполнить упаковку
npm run dev
вход и выход
-
entry
Конфигурация записи относится к файлу записи на странице. То есть из какого файла упаковывать. Файл записи по умолчанию:./src/index.js
-
output
Конфигурация экспорта относится к тому, куда выводятся сгенерированные файлы.Файл экспорта по умолчанию:./dist/main.js
, в основном обладает следующими свойствами:
path 输出路径
filename 输出文件名
Пример:
//入口
entry: {
index: './src/js/main.js',
},
//输出
output: {
path: __dirname + "/dist",//打包后的文件存放的地方
filename:"main.js"//打包后输出的文件名
},
module
webpack
только упаковатьjs
документ (понимать толькоJavaScript
Грамматика), файлы, которые не распознают другие грамматики, если вы хотите позволитьwebpack
Чтобы упаковать другие файлы, вам сначала нужно сделатьwebpack
Для идентификации различных файлов требуются специальные модули, которые в совокупности называютсяloader
.
loader
Классификация
转换编译 script-loader,babel-loader,ts-loader,coffee-loader
处理样式 style-loader,css-loader,less-loader,sass-loader,postcss-loader
处理文件 raw--loader,url-loader,file-loader
处理数据 csv-loader,xml-loader
处理模板语言 html-loader,pug-loader,jade-loader,markdown-loader
清理和测试 mocha-loader,eslint-loader
Обычно используетсяloader
css-loader 解析css语句
style-loader 将css-loader解析后的文本,添加<style>标签
babel-loader 将ES6+、JSX语法转成ES5低版本语法
url-loader
url-loader对未设置或者小于limit byte设置的图片以base64的格式进行转换
对于大于limit byte的图片用file-loader进行解析
file-loader
解析项目中的url引入(包括img的src和background的url)
修改打包后文件引用路径,使之指向正确的文件
less-loader less编译器
vue-loader
Vue也推出了自己的vue-loader,可以方便的打包 .vue文件 的代码
在vue-cli(快速构建单页应用的脚手架)中得到应用。
css loader
//index.js
import a from "./a.js";
import b from "./b.js";
var txt = "hello world";
a.run();
b.play(txt);
//打包css文件
import "./style.css"; //注意:是相对路径
Установитьloader
(loader
Это также пакет зависимостей, и его необходимо установить)
npm install css-loader --save-dev
npm install style-loader --save-dev
существуетmodule
определено вccs
Конфигурация, связанная с модулем:
module: {
rules: [
{
test: /.css$/, //正则
//把css添加到html的style标签里(style-loader要先加载)
loader: ['style-loader','css-loader'], //loader或者use
exclude: /node_modules/, //正则 排除node_modules目录
}
]
},
babel loader
babel
Являетсяjs
Компилятор, который поддерживает последнюю версиюJavaScript
(включаютJSX、TypeScript
И другой новый синтаксис). Эти плагины позволяют сразу использовать новый синтаксис, не дожидаясь поддержки браузера.
использоватьBabel
Первая настройка.babelrc
файл, который используется для установки правил транскодирования и плагинов (json
формат), хранящийся в корневом каталоге проекта.
tips
:существуетlinux
в системе,rc
Файлы в конце обычно представляют собой файлы, конфигурации и т. д., которые автоматически загружаются во время выполнения.
существует.babelrc
конфигурационные файлы, в основном для пресетов (presets
) и плагины (plugins
) для настройки..babelrc
Файл конфигурации обычно выглядит следующим образом:
{
"presets": [
["env",{"modules":false}] //modules是配置项
],
"plugins": [
[ "transform-runtime",{"polyfill":false}] //polyfill是配置项
]
}
пара по умолчанию
js
Компилируется последний синтаксический сахар, и он не отвечает за перевод вновь добавленногоapi
и глобальный объект.
Плагины управляют преобразованием кода,
babel
По умолчанию конвертируются только новыеjs
синтаксис без преобразования новогоAPI
plugins
плагин (plugins
) можно продлитьwebpack
функция,loader
Все, что нельзя сделать, можно передатьplugin
сделать это.
как:HtmlWebpackPlugin
Плагины упрощаютHTML
Создание файла может быть сгенерировано через файл шаблона для созданияHTML
документ
resolve
resolve
(перевод: разбор) конфигурацияwebpack
Как найти файл, соответствующий модулю.
alias (译:别名)通过别名将原来导入路径映射成一个新的导入路径
extensions (译:扩展)数组 导入模块时,可以省略的文件后缀名
resolve: {
alias: {
"@": path.join(__dirname,"./src") //将项目根目录下的src目录,映射为 @
},
extensions:[".js", ".json"]
}
Примеры других элементов конфигурации:
devtool 是否生成以及如何生成sourcemap
devserver 开启一个本地开发服务器
watch 监听文件变化并自动打包
watchoption 用来定制watch模式的选项
performance 打包后命令行如何展示性能提示,如果超过某个大小是警告还是报错
webpack-dev-server
webpack-dev-server
маленькийweb
Сервер может автоматически отслеживать изменения в файлах проекта, автоматически обновлять браузер и егоHMR
(Hot Module Replacement
Горячая замена модуля) заменяет только обновленную часть, а не перезагружает страницу, что значительно повышает эффективность обновления.
需要本地安装 webpack和webpack-cli
npm install webpack --save-dev
npm install webpack-cli --save-dev
npm install webpack-dev-server --save-dev
webpack.config.js
Конфигурационный файл:
let path=require("path");
//HtmlWebpackPlugin插件
let HtmlWebpackPlugin=require('html-webpack-plugin');
let htmlPlugin=new HtmlWebpackPlugin({
filename:"index.html", //生成的新文件
template:__dirname+"/src/index_temp.html", //模板文件
minify:{ //压缩
removeComments:true, //刪除注释
collapseWhitespace:true //合并空格
},
});
//配置项
module.exports = {
//输入
entry:'./src/js/main.js',//主入口文件
//输出
output: {
path: __dirname + "/dist", //打包后的文件存放的地方
filename:"main.js" //打包后输出的文件名
},
//模块
module: {
rules: [
{
test: /.css$/, //正则 解析css文件
//把css添加到html的style标签里(style-loader要先加载)
use: ['style-loader','css-loader'],
exclude: /node_modules/, //正则 必须要写exclude!!
},
{
test: /\.js$/,
use: 'babel-loader',
exclude: /node_modules/, //正则 必须要写exclude!!
},
]
},
//插件
plugins:[
htmlPlugin
],
//解析
resolve: {
alias: {
"@": path.join(__dirname,"./src") //将项目根目录下的src目录,映射为 "@"
},
extensions:['.js', '.json']
},
//开发服务器
devServer: {
inline:true, //支持dev-server自动刷新
port:"8080", //端口
open:true, //自动打开默认浏览器
},
}
webpack-dev-serve.cmd
определяется в.bin
в каталоге
"scripts": {
"dev": "webpack-dev-server --hot",
"build": "webpack --mode production"
}
бегать
npm start
vue
Шаблон MVC
MVC
Шаблоны являются одной из наиболее распространенных архитектур мобильного программного обеспечения и делят приложение на три обязательные части: Модели (Model
),Посмотреть(View
) и контроллер (Controller
).
Шаблон MVVM
MVVM
режим заключается в том, чтобы поставитьMVC
модальныйController改成ViewModel
.View
изменения автоматически обновляютсяViewModel,ViewModel
изменения также будут автоматически синхронизированы сView
отображается выше.
Базовая грамматика
Пример:
el 把 Vue 实例挂载到DOM元素上,通过id绑定html元素
data 数据对象,Vue实例的数据(注意:数据不要与methods中的方法重名)
methods 事件对象,包含事件所要触发的函数(注意:方法名不要与data中的数据重名)
computed 计算属性
watch 监听器
directives 自定义指令
钩子(hook)函数(8个) hook(钩子)函数,不同生命周期引发的动作
路由钩子函数(3个) 路由组件在不同状态时触发
components 组件容器
template 定义模板,可以是字符串,也可以是”#“选择器
props 用于接收来自父组件的数据
router 路由
store vuex 状态
свойства/методы экземпляра
vm.$el Vue 实例使用的根 DOM 元素
vm.$data Vue的data配置项
vm.$options 用于当前 Vue 实例的初始化选项
vm.$props 当前组件接收到的 props 对象
vm.$parent 父实例(如果当前实例有的话)
vm.$root 当前组件树的根 Vue 实例
vm.$children 当前实例的直接子组件
vm.$refs 原生DOM元素或子组件注册引用信息
vm.$slots 用来访问被插槽分发的内容
vm.$router 全局路由(vue-router插件)
vm.$store vuex 状态对象(vuex插件)
метод
vm.$emit() 子组件可以使用 $emit 触发父组件的自定义事件
vm.$set() Vue.set的别名
设置对象的属性, 这个方法主要用于避开 Vue 不能检测属性被添加的限制
vm.$watch 侦听数据变化
vm.$on() 监听当前实例上的自定义事件。事件可以由vm.$emit触发。回调函数会接收所有传入事件触发函数的额外参数。
vm.$mount 可以使用 vm.$mount() 手动挂载(Vue 实例化时没有 el 选项)
vm.$destroy 完全销毁一个实例。清理它与其它实例的连接,解绑它的全部指令及事件监听器。
触发 beforeDestroy 和 destroyed 的钩子。
属性绑定指令
v-bind 动态改变dom标签上的属性<br />v-bind :class="" 简写 :class=""
жизненный цикл
4 этапа:创建→挂载→更新→销毁
beforeCreate 实例创建前
created 实例创建后 初始化数据(Ajax数据请求,获取Vuex状态、路由切换等)
beforeMount 载入前
mounted 载入后 需要操作DOM时(应用第三方插件等)
beforeUpdate 更新前
updated 更新后 通过事件修改数据、v-model引发数据变化、AJAX异步更新数据
beforeDestroy 实例销毁前
destroyed 实例销毁后 切换路由(组件将被销毁)
вычисляемое свойство
Многократный доступ к вычисляемому свойству немедленно возвращает результат предыдущего вычисления без необходимости повторного выполнения функции.
Вычисляемые свойства имеют кэширование
проверка обновления для массива
push()、pop()、shift()、unshift()
splice()、sort()、reverse()
变异方法,可触发视图更新
filter(), concat() 和 slice()
非变异方法,不触发视图更新
它们可以返回新数组,用新数组替换旧数组,就可以刷新视图
объект события
event.type 触发的事件类型
event.target 触发事件的HTML元素
event.preventDefault( ) 阻止事件的默认行为
event.stopPropagation( ) 阻止事件冒泡
Vue-компоненты
- Создание компонентов
let myTemp={
template:'#temp', //模板id
data: function(){ //必须为函数(闭包)
return { //必须有return,返回值为对象{}
title:"dadaqianduan"
}
}
- Регистрация компонентов
//在components配置项中注册组件
let app=new Vue({
el:"#box",
components:{myTemp}
});
//全局注册组件,还可以使用Vue.component方法(仅限全局注册,不建议使用)
Vue.component('myTemp',MyTemp);
- использовать компоненты
<!--在Vue实例中使用组件-->
<div id='box'>
<!--组件名如果用驼峰定义,改为短横线命名-->
<my-temp></my-temp>
</div>
- коммуникация событий
- Операции с данными между родительскими и дочерними компонентами выполняются через
props
свойства и$emit()
метод достижения
использование маршрута
Определение маршрутов включает пути маршрутизации (
path
), название маршрута (name
), объекты компонентов маршрутизации (component
)
routes: [
{
path: '/', // 路由路径
name: 'home', // 路由名称
component: Home // 路由组件对象
},
{
path: '/users',
name: 'Users',
component: UserComponent
},
{
path: '/about',
name: 'about',
component: () => import( './views/About.vue')
}
]
- динамическая маршрутизация
routes: [
{
path: '/users/:username/post/:postid',
name: 'Users',
component: UserComponent,
}
]
/user/:username
/user/tom
{username:'tom'}
/user/:username/post/:postId
/user/tom/post/3
{username:'tom',postId:'3'}
навигация по маршруту
- навигационная охрана маршрута
Что такое навигационная защита маршрутизации, можно просто понять как функцию обратного вызова жизненного цикла компонента маршрутизации.
// 路由导航守卫
// 作用:在第一次进入当前路由组件之前被调用
// 使用场景:获取ajax数据
beforeRouteEnter(to, from, next) {
// to:表示要进入的路由组件
// from:表示将要离开的路由组件
// next:表示后续操作函数
// 此时还未进入到组件中,故不能使用this获取当前组件的实例
next(function(app) {
// 进入到当前组件后,才执行的回调
// 此时回调参数 app 表示当前组件的实例对象
axios.get('/users/' + app.id).then(res => {
app.user = res.data.data;
});
});
}
beforeRouteUpdate(to, from, next) {
// 此时,可以使用this表示当前组件对象
const app = this;
// 发送ajax请求
// this表示切换前的状态
// to表示要切换到的路由对象 route
axios.get('/users/' + to.params.id).then(res => {
app.user = res.data.data;
});
// 执行后续
next();
}
- Программная маршрутная навигация
methods: {
login(){
if(登陆成功){
//实现页面跳转
this.$router.push('/');
}
}
}
- push()
Перейти к указанному адресу маршрутизации и записать текущий адрес в историю, параметр может быть строковым путем или объектом, описывающим информацию об адресе.
字符串 router.push('home')
对象 router.push({path:'home'})
命名的路由 router.push({name:user,params:{userId:1}})
-
replace( )
: Перейти к указанному маршруту, он не будет идти по указанному маршрутуhistory
Добавить новую запись, но заменить текущуюhistory
записывать. -
Навигация по глобальному маршруту
Пример:
// 全局路由导航守卫
router.beforeEach((to, from, next) => {
});
Вложенные маршруты
children: [
{
path: "",
component: 路由名
},
{
path: "路径名",
component: 路由名
}
]
именованный вид
использовать
<router-view>
можно использоватьname
Свойство задает для него имя, т. е. представление именованного маршрута для краткости называется именованным представлением.
Пример:
<router-view/>
<router-view name="content"></router-view>
import About from './views/About.vue';
routes: [
{
path: "/about",
name: "about",
components: {
default: About,
content: UserComponent
}
}
]
Оглядываясь назад на предыдущие высоко оцененные статьи автора, вы можете получить больше!
- Письменные тестовые вопросы Vue.js решают типичные проблемы в бизнесе
- [Основной] Лично делиться заметками к руководству по разработке интерфейса Vue
- Личный веб-интерфейс Dada делится 92 вопросами интервью JavaScript с дополнительными ответами
- [И картинки, и тексты, лайкайте и собирайте! ] Переучитесь, чтобы закрепить свою систему знаний Vuejs
- [Карта разума] Фронтенд-разработка — Консолидируйте свою систему знаний JavaScript
- Выпуск 14-Лянган за 7 ночей, обобщающий очки знаний компьютерной сети! (всего 66)
❤️Подписывайтесь + лайк + избранное + комментарий + пересылка ❤️, оригинальность непроста, поощряйте автора создавать лучшие статьи
Нравится, добавляете в избранное и комментируете
яJeskson
(Dada front-end), спасибо за ваши таланты:Нравится, добавляете в избранное и комментируете, увидимся в следующий раз! (Если что-то не так с объяснением в этой статье, укажите ☞Спасибо, будем учиться вместе)
Увидимся в следующий раз!
Статья постоянно обновляется, вы можете искать в WeChat "Программист Дораэмон"Прочитайте ее впервые и ответьте на [Информацию] Я подготовил информацию о производителях первой линии, эта статьяwww.dadaqianduan.cn/#/был записан
github
включено, добро пожаловатьStar
:GitHub.com/веб-блог VUE/…