07.09.2020, 19:37
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
рони,
прищурьте глаза и попробуйте прочесть список. Нельзя так делать, это равноценно как построить для колясочника пандус с препятствиями.
|
|
07.09.2020, 19:40
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
laimas,
сменил расцветочку.
|
|
07.09.2020, 20:32
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от рони
|
сменил расцветочку
|
У вас зрение норма? А вот у меня минусовое, если я буду смотреть например на прилавок без очков, то никакой цвет не поможет мне прочесть то, что для меня нечитаемо. Тут сам подход пагубный - темы для слабовидящих уже должны быть готовы, а это ведь не только размер шрифта и цвет, это еще и размеры элементов управления, то есть затрагивается многое. Заставлять подбирать под себя такого пользователя в том, что для него неудобно, ну это издеваться над ним.
Кстати, такой цвет как подобран, как раз для слабовидящего, это приговор.
|
|
07.09.2020, 20:54
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
В большинстве согласен с laimas.
Можно еще добавить, что совсем слабовидящие пользуются экранными читалками, для использования которой сайт совсем никуда не годится. (Нужны атрибуты aria). А есть люди которые не могут в силу разных причин пользоваться мышью, и используют клавиатуру, для перемещения по сайту. И для них совсем никуда не годится делать кнопки с помощью div, без задания реакцию на нажатие кнопок....
Но как решение задачки, вот такой код
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body{
background-color: #fff;
color: #000;
font: 400 1rem/1.25rem sans-serif;
}
.blok {
max-width: 480px;
}
.knopka {
width: 100%;
padding: 5px;
border: 1px solid #8b00ff;
text-align: center;
margin: 10px;
cursor: pointer;
text-decoration: none;
color: #9400d3;
}
.knopka:hover {
width: 100%;
padding: 5px;
border: 1px solid #000;
text-align: center;
margin: 10px;
cursor: pointer;
text-decoration: none;
color: #8b00ff;
}
.vibran{
text-decoration: underline;
color: #8b00ff;
}
</style>
<style>
.fon{
background-color: #fff;
color: #000;
}
.chrift_osnovnoi{
font-family: sans-serif;
}
.razmer_osnovnoi{
font-size: 1rem;
}
</style>
<script>
let lnkfon = null;
let lnkchrift = null;
let lnkrazmer = null;
let mystyle = {fon: 'base', chrift: 'base', razmer: 'base'}
let head = document.querySelector('head')
function store () {
localStorage.mystyle = JSON.stringify(mystyle)
}
function setstyle (style) {
const est = document.createElement('style');
est.innerHTML = style;
head.appendChild (est);
return est;
}
function changefon (val) {
if (lnkfon) {
head.removeChild (lnkfon)
lnkfon = null
}
if (val == 'drugoi') {
lnkfon = setstyle('.fon{background-color: #000;color: #fff;}')
}
mystyle.fon = val
store()
}
function changechrift (val) {
if (lnkchrift) {
head.removeChild (lnkchrift)
lnkchrift = null
}
if (val == 'drugoi') {
lnkchrift = setstyle('.chrift{font-family: serif;}')
}
mystyle.chrift = val
store()
}
function changerazmer (val) {
if (lnkrazmer) {
head.removeChild (lnkrazmer)
lnkrazmer = null
}
if (val == '15') {
lnkrazmer = setstyle('.chrift{font-size: 1.5rem;;}')
} else if (val == '20') {
lnkrazmer = setstyle('.chrift{font-size: 2rem;;}')
}
mystyle.razmer = val
store()
}
if (localStorage.mystyle) {
mystyle = JSON.parse(localStorage.mystyle)
if (mystyle.fon != 'base') changefon (mystyle.fon)
if (mystyle.chrift == 'base') changechrift (mystyle.chrift)
if (mystyle.razmer != 'base') changerazmer (mystyle.razmer)
}
</script>
</head>
<body class="fon chrift razmer">
<div class="blok">
<div class="knopka knopka1 vibran">Основной фон</div>
<div class="knopka knopka2">Смена фона</div>
<div class="knopka knopka3 vibran">Основной шрифт</div>
<div class="knopka knopka4">Другой шрифт</div>
<div class="knopka knopka5 vibran">Основной размер</div>
<div class="knopka knopka6">Увеличить размер * 1,5</div>
<div class="knopka knopka7">Увеличить размер * 2</div>
<div class="tekst"><br><br>
ОБ ОРГАНИЗАЦИИ<br><br>
Деятельность нашей организации направлена на оказание разного рода помощи малоимущим, социально незащищенным
слоям населения.
?<br><br>
На сегодняшний день открыты приюты, предназначенные для инвалидов и престарелых граждан, лиц, ведущих
бродяжнический образ жизни, а так же для людей, оставшихся без средств к существованию и не имеющих крова над
головой.<br>
ЦЕЛЬ ДЕЯТЕЛЬНОСТИ:<br><br>
минимализация бродяжничества в Новосибирске и Новосибирской области
ОСНОВНЫЕ ЗАДАЧИ:<br><br>
социальная и психологическая адаптация граждан через проживание в центре восстановления личности;<br>
восполнение жизненно важных потребностей;<br>
развитие в людях чувства сострадания, взаимовыручки, единства, милосердия, любви к ближним;<br>
восстановление социального статуса, восстановление социальных – трудовых навыков, трудоустройство.<br>
Я знаю, что есть люди, которым нужна помощь,<br>
и мы в силах оказать её.<br><br>
Директор АНО "ТВОЙ ДОМ"<br>
Наталья Петровна Першина
</div>
</div>
<script>
const body = document.querySelector("body");
const knopka1 = document.querySelector(".knopka1");
const knopka2 = document.querySelector(".knopka2");
const knopka3 = document.querySelector(".knopka3");
const knopka4 = document.querySelector(".knopka4");
const knopka5 = document.querySelector(".knopka5");
const knopka6 = document.querySelector(".knopka6");
const knopka7 = document.querySelector(".knopka7");
let fun_knopka1 = () =>{
changefon ('base')
knopka1.classList.add("vibran");
knopka2.classList.remove("vibran");
}
knopka1.addEventListener("click", fun_knopka1);
let fun_knopka2 = () =>{
changefon ('drugoi')
knopka1.classList.remove("vibran");
knopka2.classList.add("vibran");
}
knopka2.addEventListener("click", fun_knopka2);
let fun_knopka3 = () =>{
changechrift ('base')
knopka3.classList.add("vibran");
knopka4.classList.remove("vibran");
}
knopka3.addEventListener("click", fun_knopka3);
let fun_knopka4 = () =>{
changechrift ('drugoi')
knopka3.classList.remove("vibran");
knopka4.classList.add("vibran");
}
knopka4.addEventListener("click", fun_knopka4);
let fun_knopka5 = () =>{
changerazmer ('base')
knopka5.classList.add("vibran");
knopka6.classList.remove("vibran");
knopka7.classList.remove("vibran");
}
knopka5.addEventListener("click", fun_knopka5);
let fun_knopka6 = () =>{
changerazmer ('15')
knopka5.classList.remove("vibran");
knopka6.classList.add("vibran");
knopka7.classList.remove("vibran");
}
knopka6.addEventListener("click", fun_knopka6);
let fun_knopka7 = () =>{
changerazmer ('20')
knopka5.classList.remove("vibran");
knopka6.classList.remove("vibran");
knopka7.classList.add("vibran");
}
knopka7.addEventListener("click", fun_knopka7);
</script>
</body>
</html>
|
|
07.09.2020, 20:59
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
voraa,
как решение, это имеет большой минус потому, что такое сопровождать, так лучше повеситься.
Всех этих fun_knopka и forEach не должно быть и близко.
|
|
08.09.2020, 04:40
|
|
Аспирант
|
|
Регистрация: 03.03.2016
Сообщений: 33
|
|
Где то я видел в инете готовое решение, разработанное в колабе с врачами, с уже подключенными библиотеками, чуть ли не texttospeech там был, стили подгружались из внешних файлов. Я думаю если от автора не требуется самописное решение, то лучше погуглить.
|
|
08.09.2020, 05:45
|
Профессор
|
|
Регистрация: 01.06.2010
Сообщений: 668
|
|
Спасибо за участие в обсуждение. Буду пробовать применить на свой проект.Рони как всегда отдельное спасибо. Сейчас начну делать то что ты предложил.
То что я выложил в код это был просто шаблон, я не могу весь когда выложить так как там черт ногу сломит.
Я делаю сайт для благотворительно организации, бесплатно. По мере своих сил и умений, благо люди помогают, спасибо.
И я читал и изучал вопрос что нужно и как нужно делать сайт для слабовидящих, там большая пачка ГОСТов
Вот как предварительный вариант выглядит см. скриншоты.
Изображения:
|
1.jpg (72.7 Кб, 6 просмотров) |
|
2.jpg (67.1 Кб, 4 просмотров) |
|
|
08.09.2020, 05:46
|
Профессор
|
|
Регистрация: 01.06.2010
Сообщений: 668
|
|
Ops,
Я видел эти решение они очень корявые, то есть если их вставлять то может все не очень хорошо местами выглядеть, проще саму попробовать, и тем более некоторые платные
|
|
08.09.2020, 05:47
|
Профессор
|
|
Регистрация: 01.06.2010
Сообщений: 668
|
|
laimas,
то есть то что предложил voraa, лучше не пробовать использовать?
|
|
08.09.2020, 06:24
|
Профессор
|
|
Регистрация: 01.06.2010
Сообщений: 668
|
|
Я понял что допустил ошибку когда предложил шаблон. Так как все было сделано для этого шаблона, но у меня при нажатие на кнопку много каких стилей будет меняться что бы подогнать верстку и что бы все выглядело хорошо.
Можно как то сделать что бы вот это функция (таких будет 5) записалась в localStorage и если мне что то потребуется изменить какие либо стили у какого либо блока я мог просто записать в эту функцию
let ikonka_1 = () => {
shapka_versia_sv_nastroiki_ikonka_1.classList.add("podherkivanie");
shapka_versia_sv_nastroiki_ikonka_2.classList.remove("podherkivanie");
body.classList.add("style1");
body.classList.remove("style2");
shapka_versia_sv.classList.add("style1");
shapka_versia_sv.classList.remove("style2");
shapka_versia_sv_nastroiki.classList.add("shapka_versia_sv_nastroiki_teni");
navigatsia_osnovnoi_blok.classList.add("style1");
navigatsia_osnovnoi_blok.classList.remove("style2");
console.log("работает1");
}
shapka_versia_sv_nastroiki_ikonka_1.addEventListener("click", ikonka_1);
|
|
|
|