2015-01-04 2 views
0

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

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

Я пробовал поплавок и фоновое изображение. У кого-нибудь есть подсказка или трюк, чтобы правильно, динамично и гибко позиционировать 2 файла изображения?

Вот то, что я до сих пор после работы с @Utkanos ответить:

HTML

<div class="postsPage_item_content postsPage_item_quote"><?php the_content();?></div> 

CSS

div#maincontentcontainer div#primary div div.postsPage_item_content { 
    position: relative; 
    text-align: center; 
} 
div#maincontentcontainer div#primary div div.postsPage_item_quote::before, div#maincontentcontainer div#primary div div.postsPage_item_quote::after { 
    background-image: url('../images/QUOTE1.png'); 
    content: ''; 
    display: block; 
    left: 20%; 
    height: 28px; /* background-image natural height is 28px */ 
    position: absolute; 
    top: calc(50% - 50px); 
    width: 36px; /* background-image natural width is 36px */ 
} 
div#maincontentcontainer div#primary div div.postsPage_item_quote::after { 
    background-image: url('../images/QUOTE2.png'); 
    left: auto; 
    right: 20%; 
} 

Дисплей

Желаемые результаты состоят в том, что (1) каждая из динамически отображаемых котировок выравнивается с верхней частью блока контента и (2) динамически позиционирует кавычки с заполнением поля слева и справа от блока содержимого, как показано красными стрелками , enter image description here

+1

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

+0

Ах. Я не знаком с этими стилями css. Я посмотрю на них. Спасибо @MightyPork –

ответ

2

Псевдо элементы идеально подходят для такого рода вещей.

HTML:

<div id='my_div'> 
    <p>Content here.</p> 
    <p>Etc.</p> 
</div> 

CSS:

#my_div { 
    position: relative; 
} 
#my_div::before, #my_div::after { 
    content: ''; 
    width: 50px; 
    height: 50px; 
    position: absolute; 
    display: block; 
    background: url('path/to/open_quote_img.png'); 
    left: 5%; 
    top: calc(50% - 25px); 
} 
#my_div::after { 
    background: url('path/to/close_quote_img.png'); 
    left: auto; 
    right: 5%; 
} 

Этот код предполагает, что ваша цитата графика 50px по ширине и высоте - изменять по мере необходимости.

Наконец, чтобы обеспечить ваше содержание не наложения кавычек изображения, установите соответствующий padding-left и padding-right на контейнере (в моем примере div), поэтому содержание достаточно нажат от них.

+0

спасибо @Utkanos Я собираюсь попробовать ваш ответ и отправить обратно. Это будет хорошим обучением для меня. –

+0

Что-то не совсем верно в отношении стиля @Utkanos. см. мою добавленную информацию о моем oq –

+1

p/s: Не забудьте использовать '::' вместо ':' для псевдоэлементов. Последний используется для псевдоклассов, например. ': Hover'. – Terry

1

Другая возможность: absolute позиционирование внутри контейнера relative. Например:

.container { width:300px; position:relative;padding:20px} 
 
    .left-quote {position:absolute; top:10px; left:10px; font-size:30px;} 
 
    .right-quote {position:absolute; bottom:20px; right:10px; font-size:30px;}
<div class="container"> 
 
     <span class="left-quote">"</span> 
 
     <span class="right-quote">"</span> 
 
     <p>is one of the smartest and most dedicated people that I know... he helped the company achieve incredible share of voice in key publications such as...</p> 
 
    </div>

+0

ok, thanks @ luke2012 –

+0

Я пытаюсь использовать псевдо-css, но я подошел ближе к вашему ответу @ luke2012, и ваша окончательная цитата появляется после содержимого. Мне нужно, чтобы изображение отображалось справа от содержимого с помощью 'vertical-align: top' –