Равные промежутки между точками границ CSS?

У меня есть код CSS, который создает здесь простую пунктирную рамку:

border: 5px dotted #ff2100

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

Равные промежутки между точками границ CSS?

Что, если я хочу, чтобы между всеми точками были равные промежутки... Пожалуйста, помогите...

Обновлено: мне это нужно только для хрома, и вот весь CSS (border: 5px dotted #ff2100 в самом конце...)

html {
overflow: hidden; 
  width: 1470px;
  height: 450px;
  margin-top: -3px;
  margin-left: 5px;
}
.row {
  display: flex;
}

.column {
  flex: 50%;
}

.profile {
  padding: 0px;
  margin: 100px 70px 0px 0px;
  width: 50%;
  height: 25px;
  box-sizing: border-box;
  color:#161b7a;
}

.profile .name {

  margin-right: -260px;
  font-family: "Helvetica";
  font-weight: 600;
  src: url(helveticaneue-ultrathin.woff);
  float: right;
  width: 200px;
  height: 50px;
}

.profile .job {


  margin-right: -260px;
  margin-top: 25px;
  font-family: "Helvetica";
  font-weight: 100;
  font-size: 14px;
  color: #b69cd1;
  src: url(helveticaneue-ultrathin.woff);
  float: right;
  width: 200px;
  height: 50px;
}


.profile .count {
  float: right;
  margin-right: 60px;
  margin-top: -2px;
  font-family: Arial, Helvetica, sans-serif;
  font-weight: 100;
  src: url(helveticaneue-ultrathin.woff);
  color: #E6E0EC;
  font-size: 21px;
  min-width: 76px;
}

.profile img.profilePic {
  position: absolute;
  margin: -50px 70px 50px 50px;
  background: #2f293d;
  border: 4px solid #2f293d;
  padding: 1px;
  border-radius: 50%;
  box-shadow: .2rem .2rem 1rem rgba(0, 0, 0, .5);
}

.profile img.profileDia {
  position: absolute;
  margin: -7px 70px 50px 560px;
  width: 2.3%;
  height: auto;
}




.points {
  position: absolute;
  margin: -2px 100px 100px 490px;
  float: right;
  font-family: "Verdana";
  font-weight: 800;
  src: url(helveticaneue-ultrathin.woff);
  color: #0047ba;
  font-size: 18px;
}

.level {
  position: absolute;
  margin: 25px 100px 100px 135px;
  float: right;
  font-family: "Helvetica";
  font-weight: 800;
  src: url(helveticaneue-ultrathin.woff);
  color: #ed0909;
  font-size: 20px;

  display: block;
    height: 40px;
    width: 40px;
    line-height: 40px;

    -moz-border-radius: 30px; /* or 50% */
    border-radius: 30px; /* or 50% */

    background-color: #2c094f;
    color: white;
    text-align: center;
    font-size: 1.3em;
}



.profile img.profilePic.custom-borderA {
   border: 5px dotted #ff2100

}

HTML

<div class = "row">
  <div class = "column">
    <div class = "profiles"></div>
  </div>
  <div class = "column">
    <div class = "profiles"></div>
  </div>
</div>

 <link rel = "stylesheet" href = "Style.css">
<script src = "Script.js"></script>

У меня никогда не было этой проблемы. вы использовали box-sizing: border-box; в качестве предустановки?

Andu Andrici 22.04.2019 09:29

@AnduAndrici Я пытался, но это не сработало!

errorau 22.04.2019 09:35

Я сделал для вас рабочий пример, но не думаю, что есть решение. Результат выглядит по-разному в разных браузерах.

Mr Lister 22.04.2019 09:35

Я добавил код...

Sara Ree 22.04.2019 09:37

Мне это нужно только на хроме...

Sara Ree 22.04.2019 09:38

@ Саравана Javascript.

Sara Ree 22.04.2019 09:39

под каким классом? добавить как background-image?

Saravana 22.04.2019 09:39

.profile img.profilePic

Sara Ree 22.04.2019 09:40

Хотели бы вы взглянуть на это на codepen?

Sara Ree 22.04.2019 09:41

нет класса (.profile img.profilePic) в обновлении html в codepen

Saravana 22.04.2019 09:43

Давайте продолжить обсуждение в чате.

Saravana 22.04.2019 09:46

@Saravana, нет никакого способа ... вот примечание w3.org: нет контроля ни за интервалами между точками и тире, ни над длиной тире. Реализациям рекомендуется выбирать расстояние, которое делает углы симметричными.

Sara Ree 22.04.2019 09:48

@SaraRee, хорошо, заметил.

Saravana 22.04.2019 09:49

вместо border используйте gradient. У меня была эта проблема, и теперь она решена с помощью градиента.

Code_Ninja 22.04.2019 10:56
Улучшение производительности загрузки с помощью 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 страниц, которые помогут...
5
14
325
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

Вы не можете решить эту проблему с помощью чистого css здесь. Вы можете использовать фоновое изображение или изображение границы, которое делает свое дело.

Даже нет возможности изменить расстояние между точками?!

Sara Ree 22.04.2019 09:43

согласно моим исследованиям, ни в коем случае!

errorau 22.04.2019 09:45

Отказ от ответственности: это решение работает только при некоторых обстоятельствах (ОС, версия Chrome и т. д.). Используйте на свой страх и риск.


Что вам нужно сделать, так это округлить количество красных точек до целого числа.

Для изображения размером 150x150 окружность составляет 486,95 пикселей, что не может уместить целое число точек размером 5 пикселей. Одним из решений было бы использовать ширину границы 4,9688 пикселей, но это не сработает; браузер округляет ширину границы до целого числа.
Так что нам придется прибегнуть к небольшой хитрости, чтобы сделать его пригодным. Мы увеличим изображение, зададим ему ширину границы в целых пикселях, а затем уменьшим все это до исходного размера.

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

.profile {
  width:160px; height:160px;
  overflow:hidden;
}
.profile img {
  vertical-align:top;
  background:#2F293D;
  /* multiply the size by 32 */
  width:calc(150px * 32); height:calc(150px * 32);
  border:calc((5px * 32) - 1px) dotted #FF2100;
  border-radius:50%;
  /* then scale back by the same factor */
  transform:scale(calc(1 / 32));
  transform-origin:0 0;
}
<div class = "profile">
 <img src = "https://i.stack.imgur.com/W2IqJ.jpg" alt = "photo">
</div>

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

.profile {
  width:160px; height:160px;
  overflow:hidden;
}
.profile img {
  vertical-align:top;
  background:#2F293D;
  border:5px dotted #FF2100;
  border-radius:50%;
}
<div class = "profile">
 <img src = "https://i.stack.imgur.com/W2IqJ.jpg" alt = "photo">
</div>

Обратите внимание, что мне пришлось поместить контейнер вокруг изображения с помощью overflow:hidden, иначе браузер по-прежнему считал бы изображение таким же большим, как его width и height, и соответственно резервировал бы место.

Спасибо, мистер Листер, за ответ... Тем не менее, я не могу заставить ваш код работать с моим собственным кодом... кажется, что оба фрагмента, которые вы предоставили, имеют неравномерное расположение точек.

Sara Ree 22.04.2019 16:10

Хм, у меня это работает на моей машине, но похоже, что другие версии ОС и/или Chrome обрабатывают это по-другому. Извини за это. Я должен был проверить лучше.

Mr Lister 22.04.2019 17:13

Нет проблем... когда CSS не может делать простые вещи... плюс один за участие...

Sara Ree 22.04.2019 17:46

Одним из решений вашей проблемы было бы использование «Border-image». Используя это свойство css, вы можете применить изображение границы, а не прямую границу, и избавитесь от проблемы смешивания точек. Для получения подробной информации вы можете обратиться к "https://css-tricks.com/almanac/properties/b/border-image/".

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