Метод для конвертирования едениц px, em, %, pt.
В процессе разработки собственной библиотеки javascript кода, было замечено одно недоразумение: некоторые браузеры, возвращали значения некоторых CSS правил HTML элементов в разных еденицах. Чтобы избавится от такой неприятности, был создан метод, который конвертирует значения: px, em, %, pt, туда и обратно, в зависимости от передаваемых функции параметров.
Пример: конверсия PX в %, EM, PT <iframe scrolling="no" frameborder="0" src="http://www.jegit.ru/iframe/utilities/unit/1.html" name="iframe_11850167" style="height: 570px;width:100%"></iframe> <!DOCTYPE> <html> <head> <script type="text/javascript" src="jegit/jegit.js"></script> <script type="text/javascript"> // после загрузки документа $( document ).ready( function() { // после изменения списка любого SELECT $( 'select' ).change( function() { // получаем значение первого select var val = $( 'select:eq(0)' ).val(); // получаем значение второго select var parse = $( 'select:eq(1)' ).val(); // значение должно быть true или false parse = parse === 'true' ? true : 0; // конвертируем px в em еденицы $( '.em' ).text( $.unit( val, 'em', parse ) ); // конвертируем px в % еденицы $( '.pr' ).text( $.unit( val, '%', parse ) ); // конвертируем px в pt еденицы $( '.pt' ).text( $.unit( val, 'pt', parse ) ); // вызываем все события для первого SELECT }).eq( 0 ).trigger() }) </script> </head> <body> <!-- HTML CODE слишком большой чтобы показать --> </body> </html> Пример: конверсия EM в %, PX, PT <iframe scrolling="no" frameborder="0" src="http://www.jegit.ru/iframe/utilities/unit/2.html" name="iframe_11850167" style="height: 570px;width:100%"></iframe> <!DOCTYPE> <html> <head> <script type="text/javascript" src="jegit/jegit.js"></script> <script type="text/javascript"> // после загрузки документа $( document ).ready( function() { // после изменения списка любого SELECT $( 'select' ).change( function() { // получаем значение первого select var val = $( 'select:eq(0)' ).val(); // получаем значение второго select var parse = $( 'select:eq(1)' ).val(); // значение должно быть true или false parse = parse === 'true' ? true : 0; // конвертируем em в px еденицы $( '.px' ).text( $.unit( val, 'px', parse ) ); // конвертируем em в % еденицы $( '.pr' ).text( $.unit( val, '%', parse ) ); // конвертируем em в pt еденицы $( '.pt' ).text( $.unit( val, 'pt', parse ) ); // вызываем все события для первого SELECT }).eq( 0 ).trigger() }) </script> </head> <body> <!-- HTML CODE слишком большой чтобы показать --> </body> </html> Пример: конверсия % в EM, PX, PT <iframe scrolling="no" frameborder="0" src="http://www.jegit.ru/iframe/utilities/unit/3.html" name="iframe_11850167" style="height: 570px;width:100%"></iframe> <!DOCTYPE> <html> <head> <script type="text/javascript" src="jegit/jegit.js"></script> <script type="text/javascript"> // после загрузки документа $( document ).ready( function() { // после изменения списка любого SELECT $( 'select' ).change( function() { // получаем значение первого select var val = $( 'select:eq(0)' ).val(); // получаем значение второго select var parse = $( 'select:eq(1)' ).val(); // значение должно быть true или false parse = parse === 'true' ? true : 0; // конвертируем % в px еденицы $( '.px' ).text( $.unit( val, 'px', parse ) ); // конвертируем % в em еденицы $( '.em' ).text( $.unit( val, 'em', parse ) ); // конвертируем % в pt еденицы $( '.pt' ).text( $.unit( val, 'pt', parse ) ); // вызываем все события для первого SELECT }).eq( 0 ).trigger() }) </script> </head> <body> <!-- HTML CODE слишком большой чтобы показать --> </body> </html> Пример: конверсия PT в EM, PX, % <iframe scrolling="no" frameborder="0" src="http://www.jegit.ru/iframe/utilities/unit/4.html" name="iframe_11850167" style="height: 570px;width:100%"></iframe> <!DOCTYPE> <html> <head> <script type="text/javascript" src="jegit/jegit.js"></script> <script type="text/javascript"> // после загрузки документа $( document ).ready( function() { // после изменения списка любого SELECT $( 'select' ).change( function() { // получаем значение первого select var val = $( 'select:eq(0)' ).val(); // получаем значение второго select var parse = $( 'select:eq(1)' ).val(); // значение должно быть true или false parse = parse === 'true' ? true : 0; // конвертируем pt в px еденицы $( '.px' ).text( $.unit( val, 'px', parse ) ); // конвертируем pt в em еденицы $( '.em' ).text( $.unit( val, 'em', parse ) ); // конвертируем pt в % еденицы $( '.pr' ).text( $.unit( val, '%', parse ) ); // вызываем все события для первого SELECT }).eq( 0 ).trigger() }) </script> </head> <body> <!-- HTML CODE слишком большой чтобы показать --> </body> </html> Несмотря на некоторые несоответствия судя по таблице, fireFox - fireBug показывает идентичный результат в пикселях конечно. Ещё одним достоинством метода jegit.unit является его малый размер - меньше 1kb при сжатии и его автономность - выполнен как независимый объект. Если будет получен отклик - вынесу его из библиотеки в отдельный файл. Ну а пока он встроен в библиотеку Jegit javascript framework - это прямая ссылка. |
Часовой пояс GMT +3, время: 15:32. |