CSS место в круге первая буква имени

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

enter image description here

это можно сделать с помощью CSS?

Я пробовал его с псевдоэлементом класса letter, но он не работал для меня, никаких предложений?

Ответ 1

Поскольку вы сохранили эти имена, то при их извлечении вы также можете извлечь первую букву каждого слова/имени и сохранить их в атрибуте data-.

Это скорее работа на стороне сервера (или javascript), чем CSS.

например, псевдо:

[data-letters]:before {
  content:attr(data-letters);
  display:inline-block;
  font-size:1em;
  width:2.5em;
  height:2.5em;
  line-height:2.5em;
  text-align:center;
  border-radius:50%;
  background:plum;
  vertical-align:middle;
  margin-right:1em;
  color:white;
  }
<p data-letters="MN"> My Name</p><!-- or whatever structure you used -->

Ответ 2

Это не может быть сделано ТОЛЬКО с CSS, вам нужно хотя бы немного модифицировать HTML (или использовать JS), позвольте мне объяснить:

HTML, добавив атрибут title:

<div class="my-circle" title="KM"></div>
<div class="name">Kwstas Mixopoulos</div>

CSS:

.my-circle {
    content: attr(title);
}

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

Если вы не можете изменить HTML, вам придется использовать JS-решение.

Ответ 3

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

$(document).ready(function(){
  var firstName = $('#firstName').text();
  var lastName = $('#lastName').text();
  var intials = $('#firstName').text().charAt(0) + $('#lastName').text().charAt(0);
  var profileImage = $('#profileImage').text(intials);
});



#profileImage {
  width: 150px;
  height: 150px;
  border-radius: 50%;
  background: #512DA8;
  font-size: 35px;
  color: #fff;
  text-align: center;
  line-height: 150px;
  margin: 20px 0;
}


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<span id="firstName">King</span>
<span id="lastName">Singh</span>
<div id="profileImage"></div>

Ответ 4

Вот еще один способ сделать это, я изменил ссылку, приведенную в комментарии выше, хотя некоторые из предложенных выше ответов довольно коротки. Этот подход очень простой и понятный для начинающих:

$('h1').each(function() {
  var str = $(this).text();
  var matches = str.match(/\b(\w)/g);
  
  var acronym = matches.join('');
  
  $(this).prepend('<span><i>' + acronym + '</i></span>');
  
})
* {
  box-sizing: border-box;
}

h1 {
  font-size: 24px;
  margin: 15px 0;
}

h1 span {
  background: rgba(155, 79, 243, 0.74);
  text-transform: uppercase;
  font-family: "Lucida Console";
  align-items:center;
  color: rgba(233, 236, 237, 0.78);
  border-radius: 50%;
  width: 30px;
  height: 30px;
  display: inline-flex;
  font-size: 16px;
  padding: 5px;
  vertical-align: middle;
  margin: 0 10px 0 0;
}
h1 span i{
  width:max-content;
  font-style: normal;
  margin: 0 auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<h1>Morbi metus</h1>
<h1>yorbi fasetus</h1>
<h1>test tessdfa</h1>