clip-path
прекрасно умеет скруглять, rtfm.class Typewriter {
constructor(element, texts, speed) {
this.element = element;
this.texts = texts;
this.speed = speed;
this.index = 0;
this.textIndex = 0;
}
start() {
this.type();
}
type() {
if (this.index < this.texts[this.textIndex].length) {
this.element.innerHTML += this.texts[this.textIndex].charAt(this.index);
this.index++;
setTimeout(() => this.type(), this.speed);
} else {
this.index = 0;
this.textIndex = (this.textIndex + 1) % this.texts.length;
this.element.innerHTML = "";
setTimeout(() => this.type(), this.speed);
}
}
}
const qualityElement = document.getElementById("quality");
const TEXTS = ["Креативность ", "Эффективность ", "Индивидуальность "];
const SPEED = 85;
const typewriter = new Typewriter(qualityElement, TEXTS, SPEED);
typewriter.start();
const el = document.querySelector('p');
const strings = [ 'hello, world!!', 'fuck the world', 'fuck everything' ];
const delay = 100;
function Typewriter(el, strings, delay) {
let i = 0;
let length = 0;
return setInterval(() => {
if (++length > strings[i].length) {
i = -~i % strings.length;
length = 0;
}
el.textContent = strings[i].slice(0, length);
}, delay);
}
const intervalId = Typewriter(el, strings, delay);
// хотим остановить, делаем так: clearInterval(intervalId);
function Typewriter(el, strings, delay) {
let timeoutId = null;
(function step(i, length) {
length = -~length % -~strings[i].length;
i = (i + !length) % strings.length;
el.innerText = strings[i].substring(0, length);
timeoutId = setTimeout(step, delay, i, length);
})(0, 0);
return () => clearTimeout(timeoutId);
}
const stop = Typewriter(el, strings, delay);
// хотим остановить, делаем так: stop();
const openAccordion = (accordion) => {
// твой код
accordion.scrollIntoView();
};
Насколько такой подход к разработке правильный?Нинасколько. Так как озон достаточно старая система, проектирование мобильной версии с отдельным мобильным видом наследие периода когда верстку сделать адаптивной было гораздо сложнее, а поисковые роботы еще ориентировались на субдомены по типу м.домен.тлд для отображения результатов поиска с мобильных устройств. Менять что-то с потерей поисковой индексации уже никто не будет.
Навряд ли многие люди так уменьшают окошко браузера вручную и для чего это нужно...Это нужно не для людей которые "уменьшают окошко", а для бесшовного перехода между устройствами, так как есть планшеты, нетбуки, мобилы с разным разрешением и просто масштабирование в браузере, и для всего этого зоопарка адаптив позволяет задать нормальный вид, практически для любого устройства в заданном диапазоне разрешений, причем без специальной подгонки под экран.
<svg width='0' height='0'>
<defs>
<clipPath id='example' clipPathUnits='objectBoundingBox'>
<path d="M 0 0 a 1 1 0 0 0 1 1 h -1 v -1z"/>
</clipPath>
</defs>
</svg>
.example {
clip-path: url(#example);
}