SVG (?) Вызывает пустое пространство - PullRequest
0 голосов
/ 07 октября 2019

Прежде всего, я использую SVG, и это уже довольно сложно, так как я не смог заставить фоновое изображение работать вообще, ни через CSS, ни через тег img src.

Один известный хак с SVG - это padding-bottom hack, но я недостаточно знаком с ними. Это был единственный способ, которым SVG, похоже, работал, копируя фигуру в Adobe Illustrator, а затем CTRL + V в коде Visual Studio. Как я могу избавиться от всего этого лишнего пространства ниже?

<div class="navbar">
    <div class="svg-wrap">
        <svg class="svg-item" width="auto" height="100">
            <rect x="20" width="20" height="400" fill="white" />
            <rect x="60" width="20" height="400" fill="white" />
            <rect x="100" width="20" height="400" fill="white" />
        </svg>
    </div>
        <ul class="nav-items">
            <li class="nav-link"><a href="#">home</a></li>
            <li class="nav-link"><a href="#">about</a></li>
            <li class="nav-link"><a href="#">contact</a></li>
            <li class="nav-link"><a href="#">portfolio</a></li>
        </ul>
    </div>

Этот блок кода содержит часть панели навигации, а также три прямоугольника рядом с левым углом

    <div class="svg-wrap">
        <svg width="100%" height="100%" viewBox="100 0 600 1200">
            <style type="text/css">
                .st0{fill:none;stroke:#FFFFFF;stroke-width:1;stroke-miterlimit:10;}
            </style>
            <path class="st0" d="M0,1c118.8,0,118.8,20,237.6,20C356.4,21,356.4,1,475.2,1C594,1,594,21,712.8,21C831.6,21,831.6,1,950.4,1
                        s118.8,20,237.6,20"/>
        </svg>
    </div>

Этот следующий пакет является волнистым путем под панелью навигации

    <svg class="left-svg" x="0px" y="0px" width="99.7px" height="792.7px"
    viewBox="10 12 99.7 792.7" style="enable-background:new 0 0 99.7 792.7;">
    <style type="text/css">
        .st0{fill:none;stroke:#FFFFFF;stroke-miterlimit:10;}
    </style>
    <line class="st0" x1="99.4" y1="0.4" x2="0.4" y2="99.4"/>
    <line class="st0" x1="99.4" y1="99.4" x2="0.4" y2="198.4"/>
    <line class="st0" x1="99.4" y1="198.4" x2="0.4" y2="297.4"/>
    <line class="st0" x1="99.4" y1="297.4" x2="0.4" y2="396.4"/>
    <line class="st0" x1="99.4" y1="396.4" x2="0.4" y2="495.4"/>
    <line class="st0" x1="99.4" y1="495.4" x2="0.4" y2="594.4"/>
    <line class="st0" x1="99.4" y1="594.4" x2="0.4" y2="693.4"/>
    <line class="st0" x1="99.4" y1="693.4" x2="0.4" y2="792.4"/>
</svg>

Это левая сторона страницы

<svg class="right-svg" x="0px" y="0px" width="99.7px" height="792.7px"
viewBox="12 12 99.7 792.7" style="enable-background:new 0 0 99.7 792.7;">
    <style type="text/css">
        .st0{fill:none;stroke:#FFFFFF;stroke-miterlimit:10;}
    </style>
    <line class="st0" x1="0.4" y1="0.4" x2="99.4" y2="99.4"/>
    <line class="st0" x1="0.4" y1="99.4" x2="99.4" y2="198.4"/>
    <line class="st0" x1="0.4" y1="198.4" x2="99.4" y2="297.4"/>
    <line class="st0" x1="0.4" y1="297.4" x2="99.4" y2="396.4"/>
    <line class="st0" x1="0.4" y1="396.4" x2="99.4" y2="495.4"/>
    <line class="st0" x1="0.4" y1="495.4" x2="99.4" y2="594.4"/>
    <line class="st0" x1="0.4" y1="594.4" x2="99.4" y2="693.4"/>
    <line class="st0" x1="0.4" y1="693.4" x2="99.4" y2="792.4"/>
</svg>

И, наконец, приведенный выше код является правой стороной страницы.

CSS:

.navbar {
    height: 80px;
    max-width: 100%;
    background-color: black;
    display: flex;
    justify-content: space-around;
    flex-direction: column;
    align-items: center;
}

.nav-items {
    display: flex;
    z-index: 2;
}

.svg-wrap {
    position: absolute;
    z-index: 1;
}

.svg-item {
    padding: 16px;
    position: relative;
    left: 5px;
}

.left-svg {
    position: relative;
    top: 45px;
    padding-bottom: 120px;
}

.right-svg {
    position: relative;
    top: 45px;
    float: right;
    padding-bottom: 120px;
}

Мне бы очень хотелось, чтобы был более понятный / короткий способ показать вам, ребята, мой код, но часть кода SVG связана с другим содержимым HTML, что делает его такимочень долго и нудно. Кроме того, я знаю, что вставка CSS только ухудшает ситуацию! Надеюсь, я не нарушаю никаких правил рассылки спама, это то, что я считаю интересным, я включил небольшое видео , чтобы вы могли видеть, как и где происходит дополнительное пространство.

1 Ответ

0 голосов
/ 07 октября 2019
<svg width="100%" height="100%" viewBox="100 0 600 1200">

Ваша панель просмотра имеет ширину 600 и высоту 1200. Поэтому попробуйте указать меньшую ширину и высоту для него и отметьте

...