Как изменить размер текста и фоновое изображение CSS, как <img>в этом примере? - PullRequest
3 голосов
/ 05 октября 2011

В этом примере <img> изменяет размеры, как я хочу

Редактировать: повторно добавлено http://jsfiddle.net/jitendravyas/yBkFL/

Но я также хочу изменить размерСкидка тег и текст.если я уменьшу размер окна браузера до небольшого размера, то также следует изменить размер тега Discount 20% и текста «Good Product».

enter image description here

Мне нужна совместимость с IE8 и 9и последнее Firefox, Chorme и iPad safari

Я хотел бы работать только с CSS, но если это невозможно, тогда использование javascript / jquery вполне допустимо.Совместимость важна.

Важная часть HTML и CSS

HTML (отредактировано)

<ul>
 <li>
   <span class="twenty-percent">
     <span class="rotate">20%</span>
   </span>
     <img src="image.jpg">
   <span class="description">Good Product</span>
 </li>
</ul>

CSS (отредактировано:)

    li {
    float: left;
    width: 18%;
    padding: 0;
    position: relative;
    float: left;
    margin: 15px;
    background: yellow;
    display: inline }

img { width: 100%; }

li img { display: block; }

.twenty-percent {
    content: '';
    background:url(http: //i.imgur.com/9cfK5.png) no-repeat;
    position: absolute;
    right: -15px;
    top: -2px;
    width: 45px;
    height: 45px; }

.description {
    display: block;
    font-size: 120%; }

.rotate {
    color: #FFFFFF;
    font-size: 16px;
    font-weight: bold;
    padding-right: 10px;
    position: absolute;
    right: -5px;
    text-shadow: 0 1px 1px #000000;
    top: 9px; }

Ответы [ 4 ]

1 голос
/ 05 октября 2011

Я не знаю чистого CSS-способа сделать это, но с небольшим количеством jQuery это возможно следующим образом:

/* Original width of the description element */
var origWidth = $('.description').width();

/* Function to set the font size of description.  Based on its current width
   compared to its original width.  The * 70 is a factor you can use to increase
   or decrease the calculated font size. */
var setFontSize = function(){
    var $desc = $('.description');
    $desc.css({fontSize:  $desc.width()/origWidth * 70 + "%"});
}

/* Set the font size on load and when the viewport resizes */
setFontSize();    
$(window).resize(setFontSize);

Вот демонстрационная версия .

Примечания

  1. Выше предполагается, что все .description элементы имеют одинаковую ширину.

  2. Вы можетеулучшить внешний вид скрипта, скрывая текст, пока размер шрифта не будет рассчитан при загрузке.Это предотвратит скачок размера шрифта, который вы видите перед первым вызовом setFontSize().

  3. Если вы хотите улучшить соотношение размеров шрифта (вместо того, чтобы полагаться на коэффициент * 70 с жестким кодом)), вы можете использовать функцию при загрузке, которая рассчитывает максимально возможное пространство для текста в вашем .description.Затем вы можете использовать это значение для определения коэффициента.

Обновлено: Новая версия кода, которая также изменяет размер зеленой процентной скидки на текст и изображение.

HTML

<ul>
    <li>
        <!-- Green circle background has been changed to an <img>.  Now it
             can be scaled as the size changes.  It is absolutely positioned
             behind the percentage text.  -->
        <span class="percent">
            <img src="http://i.imgur.com/9cfK5.png"/>
            <span class="rotate">20%</span>
        </span>
        <img src="http://lorempixum.com/100/200/">
        <span class="description">Good Product</span>
    </li>
    <!-- Remaining items -->
</ul>

CSS

/* Container that holds percent text and green circle <img> */ 
.percent {
    content: '';
    position:absolute;
    right:-15px;
    top:-2px;
    height: 45px;
    width: 45px;

    /* Vertically center percent text */
    line-height: 45px;
    font-size: 100%;
}

/* Green circle image */ 
.percent img {

    /* Grow/shrink as .percent size changes */
    width: 100%;
    height: auto;

    /* Absolutely position behind percentage text */
    position: absolute;
    z-index: 1;
    top: 0;
    left: 0;   
}

.rotate {
    /* Positions percent text above green circle <img> */
    position: relative;
    z-index: 2;

    /* Keeps text centered as size changes */
    display: block;
    text-align: center;

    /* remaining rules */
}

jQuery

/* Get common element references */
var $desc = $('.description');
var $percent = $('.percent');

/* Store the original values.  We'll use these to smoothly change the size */
var orig = {
    description: $desc.width(),
    percent: $percent.width(),
    right: parseInt($percent.css('right'), 10)  
};

/* Sets font sizes and changes green circle image size and position */
var setFontSize = function(){  

    /* Get the percent of size change */
    var change = $desc.width()/orig.description;  

    /* Update the .description font-size */
    $desc.css({
        fontSize:  change * 100 + "%"
    });

    /* Update the following .percent properties:
       1. font-size
       2. width: to grow/shrink green circle image
       3. line-height: to keep percent text vertically centered
       4. right: keeps .percent container in the same proportional position */
    $percent.css({
        fontSize:  change  * 100 + "%",
        width: orig.percent * change + "px",
        lineHeight: orig.percent * change + "px",
        right: orig.right * change + "px"
    });

} 

/* Set the font size on load and when the viewport resizes */
setFontSize();    
$(window).resize(setFontSize);

Демонстрация этого в действии.

0 голосов
/ 26 ноября 2013

Чтобы изменить размер текста, создайте блок, в котором он содержится в CSS. например: Body, Main, Footer и т. д., затем просто используйте команду font-size . Вот так

    body {
Font-size:1.1EM;
}

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

0 голосов
/ 05 октября 2011

Фоновые изображения не масштабируются как изображения (теги <img>). Измените логотип 20% на <img>, затем измените его размер, как при увеличении изображения. Размер шрифта можно указывать в процентах, поэтому попробуйте установить размер шрифта равным 120%.

0 голосов
/ 05 октября 2011

Вы можете создать два класса CSS, которые описывают два размера / версии, которые вы хотите. Вы можете использовать jquery для определения размера браузера и добавления и удаления соответствующих классов CSS по своему вкусу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...