2012-03-16 7 views
5

¿Alguien sabe si Firebug redondea el desplazamiento hacia la derecha y hacia la izquierda cuando nos da el siguiente panel?Cálculos de Firebug y Compensación

La razón por la que pregunto es porque tengo problemas con el uso de desplazamientos que tienen decimales y me pregunto si Firebug redondea o minimiza estos valores.

Intenté echar un vistazo al código fuente pero no pude identificar dónde se realizaban los cálculos de compensación.

Cualquier ayuda apreciada.

enter image description here

Respuesta

5

De acuerdo con la firebug source on SVN, los valores de desplazamiento se analizan como enteros . También eche un vistazo a this.

No soy 100% de lo que Firebug hace , pero cuando trato con los valores decimales para los píxeles siempre piso porque el redondeo puede romper el diseño.

Esta pregunta también puede ayudar: Are the decimal places in a CSS width respected?

+0

son? 'parseInt' solo se usa en anchuras de borde, que no pueden ser más pequeñas que un píxel. Las compensaciones aparentemente se quedan solos. –

+0

@TJ - muchas gracias por la ayuda y el conocimiento. Hemos decidido piso. Estábamos básicamente resolviendo si ciertos elementos se superponen. – Abs

+0

@Abs: De nada. –

2

No estoy seguro acerca de esto, sin embargo. Pero creo que cuando estableces un estilo que tiene un punto decimal. Es el navegador el que determina si ese decimal debe ser redondeado o con piso. Por razones prácticas, el decimal redondeado es la mejor opción. Es la mejor opción porque los elementos flotados tienen una mayor probabilidad de cambiar el diseño dramáticamente. Por ejemplo, si tiene un envoltorio con tres rectángulos. El contenedor tiene 60 píxeles de largo y establece el ancho de los rectángulos a 20.5 píxeles. Si el navegador redondea el punto decimal, el último rectángulo pasará a la siguiente fila.

Aquí hay un JS fiddle donde puede probar varios puntos decimales para varios navegadores. Y si estoy en lo cierto, el desplazamiento hacia la izquierda y hacia la parte superior siempre tendrá el mismo valor que los métodos JS nativos offsetLeft y offsetTop. Al menos en mis pruebas

  • Firefox redondea
  • pisos
  • Google Chrome Safari &
+0

Buen ejemplo! Sin embargo, mis pruebas revelan el resultado opuesto. Estoy usando Mac OS X y obtengo estos resultados: - Firefox 11: rondas, entonces 20.4 ==> 20 y 20.5 => 21. - Safari 5.1.2 y Chrome 17: piso, aunque 20.99 se redondea a 21, mientras 20.90 tiene piso a 20. No entiendo cómo [flooring] (http://en.wikipedia.org/wiki/Floor_and_ceiling_functions) tres elementos de ancho 20.5px no encajarían uno al lado del otro en un 60px envase. El ancho del piso sería de 20px y se ajustaría perfectamente. Redondear hasta 21px requeriría tres píxeles adicionales forzando al último elemento a moverse hacia abajo. –

+0

Lo siento TJ mi error. Soy de Suecia, así que los confundí. Cambiaré mi respuesta. – einstein

+0

¿Puedo preguntar por qué necesita esta información? – einstein