Спорадическое позиционирование div с помощью Jquery + Isotrope

  • Автор темы Виктория3
  • 69
  • Обновлено
  • 15, May 2024
  • #1
Всем здравствуйте,



В настоящее время я использую jquery + «изотроп», чтобы создать галерею изображений, в которой изображения можно фильтровать с помощью «фильтров данных». Но «Изотоп» использует сетки для организации элементов управления, но мне бы хотелось что-то вроде следующего изображения, в котором нет сетки или случайного позиционирования.



Знаете ли вы, как я могу настроить «Изотроп», чтобы он выглядел более рыхлым или свободным от какой-либо каменной кладки или сетчатой системы?

Ближе всего у меня получилось, как показано ниже, но, как вы можете видеть в jsfiddle, между элементами div нет зазора, и он по-прежнему очень похож на сетку.

Скрипка: https://jsfiddle.net/postcolonialboy/w31L4wkw/

HTML
 * {

-webkit-box-sizing: border-box;

-moz-box-sizing: border-box;

box-sizing: border-box

}

body {

font-family: "Helvetica Neue", sans-serif;

max-width: 95%;

margin: 0 auto;

padding-top: 5%;

}

.isotope {

background: 0;

max-width: 95%;

margin: 0 auto

}

.isotope:after {

content: '';

display: block;

clear: both

}

.item {

float: left;

width: 332px;

height: 213px;

background: 0;

border: 1px solid black

}

.item.width2 {

width: 321px;

}

.item.height2 {

height: 342px;

}

.item.width3 {

width: 472px;

}

.item.height3 {

height: 431px;

}
Код (разметка): JS
  jQuery(window).on("load resize", function(e) { var $container = $('.isotope'), colWidth = function() { var w = $container.width(), columnNum = 1, columnWidth = 0; //Select what will be your projects columns according to container width if (w > 1040) { columnNum = 6; } else if (w > 850) { columnNum = 5; } else if (w > 768) { columnNum = 4; } else if (w > 480) { columnNum = 3; } else if (w > 300) { columnNum = 2; } columnWidth = Math.floor(w / columnNum); //Default item width and height $container.find('.item').each(function() { var $item = $(this), width = columnWidth, height = columnWidth; $item.css({ width: width, height: height }); }); //2.4x width item width and height $container.find('.width2').each(function() { var $item = $(this), width = columnWidth * 2.4, height = columnWidth; $item.css({ width: width, height: height }); }); //2.4x height item width and height $container.find('.height2').each(function() { var $item = $(this), width = columnWidth, height = columnWidth * 2.4; $item.css({ width: width, height: height }); }); //2.4x item width and height $container.find('.width2.height2').each(function() { var $item = $(this), width = columnWidth * 2.4, height = columnWidth * 2.4; $item.css({ width: width, height: height }); }); //3.3x width item width and height $container.find('.width3').each(function() { var $item = $(this), width = columnWidth * 3.3, height = columnWidth; $item.css({ width: width, height: height }); }); //3.3x height item width and height $container.find('.height3').each(function() { var $item = $(this), width = columnWidth, height = columnWidth * 3.3; $item.css({ width: width, height: height }); }); //3.3x item width and height $container.find('.width3.height3').each(function() { var $item = $(this), width = columnWidth * 3.3, height = columnWidth * 3.3; $item.css({ width: width, height: height }); }); return columnWidth; }, isotope = function() { $container.isotope({ resizable: true, itemSelector: '.item', masonry: { columnWidth: colWidth(), gutterWidth: 15, } }); }; isotope(); 
Код (разметка): CSS
 <div class="isotope"> <div class="item cat-2 height2 width2 cat-4">width3</div> <div class="item height2 width2 cat-4">height2</div> <div class="item cat-2">normal</div> <div class="item cat-1 height3 width3">height3</div> <div class="item cat-2 cat-4 height3 width3">normal</div> <div class="item cat-2">normal</div> <div class="item cat-2 cat-3">normal</div> <div class="item height2 width2">width2 height3</div> <div class="item height2 width2">width2</div> <div class="item height2 width2 cat-4">width2</div> <div class="item cat-1 height2 width2">height2</div> <div class="item cat-2 cat-3 height3 width3">width3</div> <div class="item cat-3 height3 width3">height3</div> <div class="item cat-3 width2 height2 cat-1">width2 height2</div> <div class="item height2 width2 cat-4 cat-1">width2</div> <div class="item height2 width2 cat-3">height2</div> <div class="item cat-1 cat-3 height3 width3">width3</div> </div>
Код (разметка): Спасибо.

Виктория3


Рег
04 Feb, 2014

Тем
1

Постов
2

Баллов
12
  • 18, May 2024
  • #2
Возможно, вам захочется сделать шаг назад и подумать об этом.

Это НЕ отдельные вопросы, если вы создаете веб-сайт! Два правила ХОРОШЕГО проектирования и разработки:

1) Контент диктует разметку,

2) Контент + разметка + макет доступности.

Тем более, как вы вообще можете создать «технический ответ», даже не имея семантической разметки фактического контента или разумного факсимиле будущего контента.

Вы возитесь с внешним видом еще до того, как у вас появится что-то похожее на контент!



Презентационные расплывчатые классы, например, высота и ширина? классы для всего, когда есть совершенно хороший родительский контейнер? расплывчатые/бессмысленные занятия? Концепции макета, которые не позволяют потоку выполнять свою работу? Что с сгенерированным контентом, очищающим asshattery? Гораздо меньше сценариев, пытающихся управлять макетом - каждый раз, когда вам нужен JavaScript, тем более какой-то недоумок, раздутый дебил, тупой, пускающий слюни, идиот "фреймворк" для макета? Ты делаешь что-то не так.



ЛЮБОЙ, кто говорит вам обратное, не имеет права раздражаться, даже открывая рот на эту тему, и ему нужен хороший быстрый пинок в промежность!

Каков ваш план реагирования на это? Ваш план заполнения больших дисплеев, позволяющий уменьшить необходимость прокрутки? Где ваш РЕАЛЬНЫЙ контент?

Итак, тем не менее.

рассматривали ли вы возможность чередования поплавков? Только CSS3, но: .isotope+div { float:left; } .isotope+div:nth-child(even) { float:right; } Переменные поплавки будут складываться вверх.



Затем вам нужно всего лишь установить ширину на 50%, чтобы убедиться, что они не перекрываются слева и справа и не складываются смешно - хотя я предполагаю, что вы замените этот текст-заполнитель тегами IMG, поскольку у вас НУЛЕВОЙ вредный бизнес, объявляющий фиксированная высота всего, что содержит контент, ОСОБЕННО в пикселях, если только вы не знаете ни черта о доступности.

Вы приходите с чем-то, что с точки зрения разработки является необоснованной тарабарщиной, вычурной, невежественной «дизайнерской» чушью, а затем задаетесь вопросом, почему люди занимаются дизайном? Вы только что вытащили эквивалент «Доктор, доктор, мне больно, когда я это делаю!»

Ну не делай этого!
 

Naitan


Рег
23 Oct, 2014

Тем
1

Постов
3

Баллов
13
  • 18, May 2024
  • #3
О, и извините за такую откровенность.

Если вы не поняли, я ТАКОЙ поклонник фреймворков и готовых решений.

Это просто мошенническая приманка для людей, которые не хотят тратить время на правильное использование HTML или CSS...

Ну, или люди, которые недостаточно знают о доступности для меня создания «дизайнов» — посмотрите, как 99% людей называют себя «дизайнерами», когда единственное, что они знают, — это возиться в Photoshop.
 

ayanev


Рег
01 Jan, 2011

Тем
0

Постов
3

Баллов
3
  • 19, May 2024
  • #4
Есть одна вещь, которую я не понимаю в современных веб-разработчиках.

Вполне ожидаемо, что алгоритм генерирует плохую разметку, поскольку у него нет ни мозгов, ни представления об эстетике.

Но зачем ВАМ, веб-разработчику-ЧЕЛОВЕКУ, имитировать ОЧЕНЬ ПЛОХО разработанную программу типа wysiwyg?

Я имею в виду это:

 <div class="isotope">

<div class="item cat-2 height2 width2 cat-4">width3</div>

<div class="item height2 width2 cat-4">height2</div>

<div class="item cat-2">normal</div>

<div class="item cat-1 height3 width3">height3</div>

<div class="item cat-2 cat-4 height3 width3">normal</div>

<div class="item cat-2">normal</div>

<div class="item cat-2 cat-3">normal</div>

<div class="item height2 width2">width2 height3</div>

<div class="item height2 width2">width2</div>

<div class="item height2 width2 cat-4">width2</div>

<div class="item cat-1 height2 width2">height2</div>

<div class="item cat-2 cat-3 height3 width3">width3</div>

<div class="item cat-3 height3 width3">height3</div>

<div class="item cat-3 width2 height2 cat-1">width2 height2</div>

<div class="item height2 width2 cat-4 cat-1">width2</div>

<div class="item height2 width2 cat-3">height2</div>

<div class="item cat-1 cat-3 height3 width3">width3</div>

</div>
HTML: ...НЕТ. Что касается метода, то он не самый лучший.

Было бы лучше, если бы вы действительно увидели работающий пример.

Дай мне немного времени, я тебе кое-что запишу.
 

Karabas Barabas


Рег
27 Aug, 2015

Тем
0

Постов
2

Баллов
2
  • 03, Jun 2024
  • #6
я ценю ваш комментарий, спасибо.

Должен сказать, меня очень тревожит тот факт, что всякий раз, когда я публикую вопрос, требующий технического решения, в ответах всегда критикуются аспекты дизайна, которые для меня являются отдельными вопросами!

есть функция вариации дизайна, иначе все страницы работали бы одинаково: кому нужны города с абсолютно одинаковыми зданиями?

этого достаточно, да. я пытался манипулировать «алгоритмом», но мои ограниченные знания позволили мне быстро исправить это.

было бы здорово, если бы вы могли предложить «выход». Спасибо
 

Demir1


Рег
19 Apr, 2015

Тем
1

Постов
3

Баллов
13
  • 09, Jun 2024
  • #7
Да, я посмотрел это, потому что никогда о нем не слышал, и это похоже на вычурную сценарную чушь, которую я никогда бы никогда не разместил на веб-сайте, поскольку это гигантский средний палец для пользователей в плане доступности.

и СЛИШКОМ легко злоупотребляют люди, которые ничего не знают и просто начинают вставлять бесконечную чушь на страницу.

В некоторых крайних случаях это может быть «мило», но поскольку это зависит от невежественный тупица, дышащая ртом, полоумная чушь, известная как jQuery

Я уверен, что Шин-Ола никогда бы не использовал его по своему выбору.
 

romanovik


Рег
25 Mar, 2011

Тем
1

Постов
2

Баллов
12
Тем
49554
Комментарии
57426
Опыт
552966

Интересно