Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

110
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda