Проблема с удалением части элемента SVG, пересекающей линию

Я попытался удалить пересечение основания полукруга и линии с помощью clip-path в .line, но это не сработало. Это правильный метод или есть другой способ?

Я попытался удалить пересечение основания полукруга и линии, используя clip-path в .line, но это не сработало. Это правильный метод или есть другой способ? Как мы можем решить эту проблему? Как мы можем удалить часть, указанную на изображении?

body {
  margin: 0vh 0vw;
}

.header {
  position: relative;
  width: 100%;
  height: 12vh;
  background-color: #004d40;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  top: 0;
}

.line {
  position: absolute;
  left: 0;
  top: calc(50%);
  width: 100%;
  height: 0.25vh;
  background-color: white;
  z-index: 1;
}

svg {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, 0%);
  z-index: 2;
}
<meta name = "viewport" content = "width=device-width, initial-scale=1.0">
<title>SVG Header with Half Circle</title>

<div class = "header">
  <div class = "line"></div>
  <svg width = "10vw" height = "5vh" viewBox = "0 0 100 50" preserveAspectRatio = "xMidYMin meet" xmlns = "http://www.w3.org/2000/svg">
        <path d = "M0,0 A50,50 0 0,0 100,0" fill = "none" stroke = "white" stroke-width = "3"/>
    </svg>
</div>

в вашем образце кода нет пути клипа?

Michael Mullany 28.08.2024 12:02
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
1
63
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Почему бы не использовать SVG, содержащий закрашенный круг? Это должно замаскировать линию внизу.

Ответ принят как подходящий

Нарисуйте линию и полукруг за один раз. SVG имеет очень широкий viewBox = "0 0 10000 120", но с помощью preserveAspectRatio = "xMidYMid slice" отображается только средняя часть, всегда заполняя высоту заголовка и отсекая лишнюю длину по бокам.

Теперь вы рисуете длинную горизонтальную линию от левой стороны до середины окна просмотра за вычетом радиуса полукруга:

M 0,60 H 4950

добавьте полукруг (с помощью относительной команды конец полукруга можно записать как «100 вправо»)

a 50,50 0 0 0 100,0

и продолжаем горизонтальную линию вправо

H 10000

body {
  margin: 0vh 0vw;
}

.header {
  position: relative;
  width: 100%;
  height: 12vh;
  background-color: #004d40;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  top: 0;
}

svg {
  width: 100%;
  height: 100%;
  fill: none;
  stroke: white;
  stroke-width: 3;
}
<meta name = "viewport" content = "width=device-width, initial-scale=1.0">
<title>SVG Header with Half Circle</title>

<div class = "header">
  <svg viewBox = "0 0 10000 120" preserveAspectRatio = "xMidYMid slice">
        <path d = "M 0,60 H 4950 a 50,50 0 0,0 100,0 H 10000"/>
    </svg>
</div>

Это был гораздо более эффективный способ сделать то, что я хотел, спасибо, это было очень информативно. @ccprog

Murat taşçı 29.08.2024 08:43

Другие вопросы по теме