Почему моя оболочка нарушает CSS содержимого, которое она оборачивает?

#javascript #css #reactjs #jsx

#javascript #css #reactjs #jsx

Вопрос:

Когда я добавляю оболочку к этому jsx, она нарушает существующий CSS, и я не могу определить почему. Сначала CSS страницы является правильным, но эта оболочка приводит к сокращению элементов меню. Чего мне здесь не хватает?

Перед:

 import React from "react";
import { withRouter } from "react-router-dom";
import "./menu-item.styles.scss";

const MenuItem = ({ title, imageUrl, size, history, match }) => (
    <div className={`${size} menu-item`}>
        <div
            className="background-image"
            style={{
                backgroundImage: `url(${imageUrl})`,
            }}
        />
        <div className="content">
            <h1 className="title">{title.toUpperCase()} </h1>
            <span className="subtitle">SHOP NOW</span>
        </div>
    </div>
);

export default withRouter(MenuItem);
 

После:

 import React from "react";
import { withRouter } from "react-router-dom";
import "./menu-item.styles.scss";

const MenuItem = ({ title, imageUrl, size, history, match }) => (
    <a href="https://www.google.com">
        <div className={`${size} menu-item`}>
            <div
                className="background-image"
                style={{
                    backgroundImage: `url(${imageUrl})`,
                }}
            />
            <div className="content">
                <h1 className="title">{title.toUpperCase()} </h1>
                <span className="subtitle">SHOP NOW</span>
            </div>
        </div>
    </a>
);

export default withRouter(MenuItem);
 

Ответ №1:

Браузеры обычно добавляют свой собственный стиль к anchor тегу, и тег также наследует некоторый стиль от тела и еще много чего. Что вам нужно сделать, так это применить к якорю свой собственный CSS, чтобы убедиться, что он всегда расширяется как оболочка.

Может быть, что-то вроде этого должно помочь.

 #mainMenu a {
 display: inline-block;
 width: 100%; //depending if your menu direction is in rows or columns
}
 

Если в вашем пункте меню также есть некоторые отступы, я предлагаю также переместить это отступ в привязку.

В любом случае, вы всегда можете поиграть с CSS, применяемым к вашему тегу привязки, если вы проверяете элемент (щелкните правой кнопкой мыши -> Проверить). Дайте мне знать, если у вас возникнут дополнительные вопросы по этому поводу.