Многоугольные Отделения — Делающий переполнение содержания в определенной форме?

Вот сайт, я в настоящее время продолжаю работать: http://willcrichton.net/

При нажатии на стрелки на каждой стороне шестиугольника в середине Вы видите, что это переходит левое и правое использование jQuery + Цикл jQuery + Упрощение jQuery. Однако можно также видеть, что это довольно ужасно - потому что я использую шестиугольники и не квадраты и потому что отделения квадратной формы, перекрытия шестиугольника содержания с с фоном неприятным способом.

Так, мой вопрос: как я по существу взломал бы отделение шестиугольник? Тот шестиугольник должен быть тем же размером/формой отделения содержания, и когда содержание вне области шестиугольника, это должно быть невидимо.

Править:

HTML

CSS

/* Container styles */

#container {
    width: 908px;
    height: 787px;
    left: 50%;
    top: 50%;
    position: absolute;
    margin-top: -393.5px;
    margin-left: -452px;
    background-image: url("images/background.png");
    font: 12px "Lucida Sans Unicode", "Arial", sans-serif;
    z-index: 3;
}    

#content {
    width: 686px;
    height: 598px;
    position: absolute;
    left: 50%;
    top: 50%;
    margin-top: -282px;
    margin-left: -343.5px;
    /*background-image: url("images/hacky_hole2.png");*/
    z-index: 1;
}

    .slide {
        width: 100%;
        height: 100%;
        background-image: url("images/content.png");
        position: relative;
        z-index: 2;
    }

ОБНОВЛЕНИЕ: при проверке сайта теперь Вы видели бы мою неудачную попытку при использовании метода "окна", и Вы видите, почему z-индекс не работал.

8
задан Will 2 June 2010 в 22:41
поделиться

3 ответа

Вы не можете превратить div в шестиугольник, но вы можете использовать PNG-файлы с альфа-прозрачностью, чтобы замаскировать нужную область. Итак, вам нужно будет создать четыре div, каждый с фоном, который имеет файл PNG с прозрачностью, которая действует как маска. Эти div будут расположены абсолютно над вашим div с помощью ползунка.

РЕДАКТИРОВАТЬ: Как отметил ниже Пекка, это также можно сделать с помощью одного большого файла PNG, выступающего в качестве маски.

ИЗМЕНИТЬ №2: Глядя на опубликованный вами код, я бы изменил его следующим образом:

<div id="content"></div>
<div class="slide">

    <a href="#"><div class="arrow left"></div></a>
    <a href="#"><div class="arrow right"></div></a>

    <div id="websites-title"></div>
    <div class="website">

    </div>
</div>
<div class="slide">
    <a href="#"><div class="arrow left"></div></a>
    <a href="#"><div class="arrow right"></div></a>
</div>

Обратите внимание, что я закрыл элемент

. Этот элемент должен быть родственником ваших слайдов, но располагаться над слайдами с более высоким z-индексом. Или вам может потребоваться создать новый элемент, предназначенный для отображения маски, если ваш div «содержимого» используется не только для отображения маски, но и для других целей.

4
ответ дан 5 December 2019 в 22:16
поделиться

Eric Meyer's curvelicious concept and demo может указать вам правильное направление. Это сложный хак из "ранних дней CSS", но это мощная техника.

1
ответ дан 5 December 2019 в 22:16
поделиться

Если бы я развивался, я бы превратил вашу двухслойную связь в слой дерева...

ex:

1. Слой с существующим фоном

2. Слой с серым шестиугольным вагоном

3. Слой с окружающими словами и окружающим фоном

Вот так, когда вы нажимаете стрелки влево и вправо, серый шестиугольник будет скользить в середине 1. и 3. слои, тем самым предотвращая то уродство, о котором вы упомянули :)

Надеюсь, это поможет!

1
ответ дан 5 December 2019 в 22:16
поделиться