Когда пользователь заполняет форму, чтобы позволить пользователю сосредоточиться на заполнении или определенном управлении формой, цель может быть достигнута путем установки стиля этого пространства.
Итак, как добиться такого эффекта, как показано в следующем примере
(https://coder.itclan.cn/fontend/js/26-set-form-style/)
Нативная реализация Js
Ниже приведен простой пример кода.,Чтобы добиться такого эффекта,должен знатьonfocus
иonblur
,Первое — это целенаправленное событие обратного вызова.,И последнее - это контрольный цикл вызов, когда фокус потерян
на веб-странице,Только один элемент управления всегда может получить фокус,Поэтому необходимо пройти все контроли,определите для них то же самоеonfocus
а такжеonblur
логика
Когда элемент управления получит фокус, установите для него уникальный стиль границы, в противном случае восстановите исходный стиль границы.
function init() {
var f = document.form[0]; // Получить форму DOM
var elements = f.elements; // Получить все массивы управления
var str = ''; // Объединение строк
// Пройти через
for(var i = 0;i<elements.length;i++) {
var e = elements[i]; // текущий контроль
e.onfocus = function() { // Определите обратные вызовы сфокусированного стиля
// Измените красный цвет границы
this.style.border = '1px solid red';
}
e.onblur = function() { // обратный вызов, когда фокус потерян
this.style.border = ''; // Восстановить исходный стиль границы
}
}
}
init();
Следующееhtml
код шаблона
<form>
годы
<select name="myyear">
<option value="2022">2022</option>
<option value="2021">2021</option>
<option value="2020">2020</option>
<option value="2019">2019</option>
</select><br />
<input type="button" значение = «Отправить» onclick="showParams()">
</form>
Реализация версии Vue
существоватьvue
里面是直接существовать元素上绑定focus
иblur
события реализуются,Как показано в следующем коде
<template>
<div class="wrap">
<el-form
status-icon
label-width="100px"
>
<el-form-item>
имя:
<input type="text"
v-model="name"
autocomplete="off"
Placeholder="Пожалуйста, введите свое имя"
@blur="handleInput('blur')"
@focus="handleInput('focus')"
:style="style" />
</el-form-item>
</el-form>
</div>
</template>
<script>
export default {
name: "formStyle",
data() {
return {
name: '',
style: {
border: "1px solid #ccc"
}
}
},
methods: {
handleInput(type) {
if(type == 'blur') {
this.style.border = '1px solid #ccc';
}else {
this.style.border = '1px solid red';
}
}
}
};
</script>
<style lang="scss" scoped>
.wrap {
text-align: center;
margin: 20px 0 20px 0;
}
</style>
Подвести итог
Будь то роднойjs
все ещеVue
Реализация версии,Все нужно использоватьonblur
(input
Коробка теряет фокус)иonfocus
(input
коробка фокус фокус),Основные принципы реализации аналогичны,Просто контролируйте это в рамках,Форма выражения несколько иная