- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Вообще, подобные задачи решаются иначе. Выбросьте нумерацию ms-box, и код будет таким:
$(document).ready(function () {
const mainBoxNews = document.querySelector('.main-box-news');
if (mainBoxNews) {
$('.ms-box a').hover(
function () {
$(this).parent().find('.mbn__shor').css('margin-bottom','0');
}, function () {
let el=$(this).parent().find('.mbn__shor');
$(el).css('margin-bottom','-'+$(el).height()+'px');
}
);
}
});
Хотя на самом деле, скрывать элементы через marginBottom - тоже то ещё извращение.
Что-то не срабатывает ваш код
Там только направление. А в итоге - что то типо такого:
document.querySelectorAll('.mbn__shor').forEach (
e => {
const a = e.closest('a');
if (a) {
const h = e.offsetHeight;
e.style.marginBottom = `-${h}px`;
a.addEventListener('mouseover', ev=>{
e.style.marginBottom = 0;
});
a.addEventListener('mouseout', ev=>{
e.style.marginBottom = `-${h}px`;
});
}
});
forEach
В IE и старых браузерах не работает.
ничего не понял, скрыть показать блок в 1 строчку уже не кошерно?🤔
В IE и старых браузерах не работает.
146 % полифил гуглится. А если нет, то пишется в пару десятков строк
А просто for - "некошерно"? ;)
А просто for - "некошерно"? ;)
Можно и for. Просто мне так больше нравится.
Дело вкуса.
Я посмотрел, в чём там проблема. Скрипт пытается найти square[3], так как последнее вычисленное значение num равно 3. И естественно, не находит его, о чём и пишет в сообщении о ошибке.
Вообще, подобные задачи решаются иначе. Выбросьте нумерацию ms-box, и код будет таким:
Хотя на самом деле, скрывать элементы через marginBottom - тоже то ещё извращение.
Спасибо большое, но данный код не скрывает блоки при первоначальной загрузке страницы. Скрываются только после наведения курсора мыши. И что не так с marginBottom? Вроде хорошо работает. Считаете как-то по-другому было бы лучше?
Там только направление. А в итоге - что то типо такого:
Спасибо большое.
Спасибо большое, но данный код не скрывает блоки при первоначальной загрузке страницы.
Ну Вы же учитесь? Вот и доделайте. Вариантов несколько. Я же переписал только тот кусок, который вызывал у Вас затруднения.
И что не так с marginBottom? Вроде хорошо работает. Считаете как-то по-другому было бы лучше?
Не применяют обычно для этой цели margin. Применяют display, применяют position, применяют height/width, ещё что-то применяют, а margin - это экзотика какая-то.
И у вас же подключен jQuery, причём никакой анимации - для этого вообще существуют методы show/hide/toggle.
Спасибо большое всем за помощь.
Ну Вы же учитесь? Вот и доделайте. Вариантов несколько. Я же переписал только тот кусок, который вызывал у Вас затруднения.
Получилось вот так. Всё вроде работает нормально. Поправьте, если считаете, что что-то не так.
$(document).ready(function () {
const mainBoxNews = document.querySelector('.main-box-news');
if (mainBoxNews) {
$('.mbn__shor').each(function () {
let el = $(this).parent().find('.mbn__shor');
$(el).css('margin-bottom', '-' + $(el).innerHeight() + 'px');
});
$('.ms-box a').hover(
function () {
$(this).parent().find('.mbn__shor').css('margin-bottom', '0');
}, function () {
let el = $(this).parent().find('.mbn__shor');
$(el).css('margin-bottom', '-' + $(el).innerHeight() + 'px');
}
);
}
});
Не применяют обычно для этой цели margin. Применяют display, применяют position, применяют height/width, ещё что-то применяют, а margin - это экзотика какая-то.
И у вас же подключен jQuery, причём никакой анимации - для этого вообще существуют методы show/hide/toggle.
Тут я с вами не соглашусь. display нет позволит скрыть блок плавно. К блоку для плавной смены margin я могу применить transition.
Блок с position:absolute не влияет на другие объекты вокруг себя, а мне же надо, чтобы он выталкивал блок, который находится выше. Примеры в видео, который я разместил выше.
Можно было использовать height, но большой разницы я не вижу.
Методы show/hide/toggle пока не знаю как использовать. Попробую изучить