Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

108
Vistas
Material-UI - Estilo de cambio de pulgares en el rango Control deslizante

Tengo dos entidades para mostrar como un componente de pulgar en Material-UI Slider y necesito un estilo diferente para cada componente de pulgar.

El pulgar de la entidad A debe aparecer en un círculo blanco y el pulgar de la entidad B debe aparecer en un círculo rojo. Logré parcialmente esta funcionalidad usando el índice de datos

 if (data-index === 0) { //show white circle } else { //show red circle }

Sin embargo, hay un gran defecto en esto, es decir, si deslizo la entidad B y la hago pararse frente a la entidad A, entonces la entidad B cambia a un círculo blanco porque el índice de datos de la entidad B se convierte en 0. ¿Hay algún otro enfoque que no sea usar el índice de datos donde yo pueden mantener el estilo independientemente de dónde se encuentren en el control deslizante.

Aquí está la caja de arena.

 import * as React from "react"; import PropTypes from "prop-types"; import Slider, { SliderThumb } from "@material-ui/core/Slider"; import { styled } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import Box from "@material-ui/core/Box"; import clsx from "clsx"; const EntitySlider = styled(Slider)(({ theme }) => ({ color: "#3a8589", height: 3, padding: "13px 0", "& .MuiSlider-thumb": { height: 27, width: 27, backgroundColor: "#fff", border: "1px solid currentColor", "&.second-thumb": { backgroundColor: "red" }, "&:hover": { boxShadow: "0 0 0 8px rgba(58, 133, 137, 0.16)" } }, "& .MuiSlider-track": { height: 3 }, "& .MuiSlider-rail": { color: theme.palette.mode === "dark" ? "#bfbfbf" : "#d8d8d8", opacity: theme.palette.mode === "dark" ? undefined : 1, height: 3 } })); function ThumbComponent(props) { const { children, className, ...other } = props; const extraClassName = other["data-index"] === 0 ? "first-thumb" : "second-thumb"; return ( <SliderThumb {...other} className={clsx(className, extraClassName)}> {children} </SliderThumb> ); } ThumbComponent.propTypes = { children: PropTypes.node }; export default function CustomizedSlider() { return ( <Box sx={{ width: 320 }}> <Typography gutterBottom>Airbnb</Typography> <EntitySlider components={{ Thumb: ThumbComponent }} getAriaLabel={(index) => index === 0 ? "Minimum price" : "Maximum price" } defaultValue={[20, 40]} /> </Box> ); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

¿Hay algún otro enfoque que no sea usar el índice de datos donde puedo mantener el estilo independientemente de dónde se encuentren en el control deslizante?

Su estilo funciona como se esperaba, lo único inesperado es que cuando arrastra el pulgar blanco y pasa el pulgar rojo, el pulgar rojo comienza a arrastrarse y el pulgar blanco se detiene porque MUI Slider no permite que el pulgar izquierdo pase el pulgar derecho . Puede ver en el código fuente que la matriz de valores siempre se ordena , y Slider encontrará el índice de pulgar más cercano al valor actual para establecerlo como activo:

 {/* white thumb on the left, red thumb on the right */} <Slider value={[0, 100]} {...} /> {/* white thumb still on the left, red thumb still on the right */} <Slider value={[100, 0]} {...} />

Entonces sí, el estilo del pulgar es consistente, solo que la posición del pulgar está restringida entre los otros pulgares y el valor mínimo/máximo.

Referencia

  • https://mui.com/components/slider/#minimum-distance
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda