2013-04-18 12 views
9

Jak mogę zwiększyć szerokość elementu przez 10rem używając jquery. Problem polega na tym, że Jquery zawsze zwraca szerokość/wysokość w pikselach i chcemy zaktualizować wysokość/szerokość w niektórych innych jednostkach.Użyj jquery, aby zwiększyć szerokość kontenera o 10 rem

na przykład: JS Bin

var $c = $('#container'); 
console.log($c.width()); 

var c = document.getElementById('container'); 

// Q1. Why is it different from above one. This is 324 while earlier it was 320. See the output. 
console.log(c.clientWidth); 

// Q2. How to update the code to increase the width by 10rem. 
$c.css({width: $c.width() + 10}); //It adds 10 pixels here. 

console.log($c.width()); 

Moje pytania są komentarze w kodzie.

+2

Zgadzam się z pytaniem, ale myślę, 'jednostka rem' jest Fonts ** ** wyłącznie zgodnie z normami EN W3C patrz: _HTTP: //www.w3.org/TR/css3 -values ​​/ _ –

+0

Tak, ale te jednostki em/rem są w tej chwili dość popularne w aplikacjach, ponieważ pozwala to dopasować zawartość strony do wielkości urządzenia. W miarę zmiany rozmiaru czcionki wszystko inne zmienia się odpowiednio. – sachinjain024

Odpowiedz

12

Przypuszczam, że biorąc font-size elementu html daje rem, wykorzystując funkcję, będziesz mógł odzyskać nawet jeśli zmienia:

// This Function will always return the initial font-size of the html element 
    var rem = function rem() { 
     var html = document.getElementsByTagName('html')[0]; 

     return function() { 
      return parseInt(window.getComputedStyle(html)['fontSize']); 
     } 
    }(); 

// This function will convert pixel to rem 
    function toRem(length) { 
     return (parseInt(length)/rem()); 
    } 

przykład: http://jsfiddle.net/4NkSu/1/

+1

Ładnie zrobione @xpy. Pomyślałem, że powinno istnieć jakieś eleganckie/proste rozwiązanie tego problemu. Twój też jest miły :) – sachinjain024

6

Postanowiono opublikować zaktualizowaną odpowiedź za pomocą jquery. Możesz wywołać funkcję bez parametru, aby uzyskać liczbę pikseli w jednym remu, lub możesz przekazać wartość rem, aby uzyskać liczbę pikseli w wielu rem. Oto jsFiddle również: http://jsfiddle.net/drmyersii/mr6eG/

var rem = function (count) 
{ 
    var unit = $('html').css('font-size'); 

    if (typeof count !== 'undefined' && count > 0) 
    { 
     return (parseInt(unit) * count); 
    } 
    else 
    { 
     return parseInt(unit); 
    } 
}