无法让元素堆叠

Can't get elements to stack

CSS不一定是我的强项,但我不知道为什么我不能让这两个元素叠加?我将父位置设置为 relative,将子位置设置为 absolute 我也将子位置设置为更高 z-index,但就是无法正常工作。 <Icon /> 总是向右偏移。

代码

import React from 'react';
import PropTypes from 'prop-types';
import styled from 'styled-components';

const propTypes = {
  iconName: PropTypes.string,
  color: PropTypes.string,
};

const defaultProps = {
  iconName: 'add_box',
  color: '#27B678',
};

const MaterialIcon = props => (
  <i className={`material-icons ${props.className}`}>
    {props.iconName.replace(/['"]+/g, '')}
  </i>
);

const Icon = styled(MaterialIcon)`
  color: ${props => props.color.replace(/['"]+/g, '')};
  font-size: 36px;
  position: absolute;
  z-index: 10;
  top: 10%;
  left: 0;
  right: 0;
  bottom: 0;
`;

const Divider = props => (
  <div
    className="mx2"
    style={{ position: 'relative', border: '1px solid #ececec' }}
  >
    <Icon
      iconName={props.iconName}
      color={props.color}
    />
  </div>
);

Divider.propTypes = propTypes;

Divider.defaultProps = defaultProps;

export default Divider;

您需要使用 topleft 将图标放置在分隔线上方。您应该给 left 一个等于图标宽度一半的负值,以便它在分隔线上方居中。例如,如果图标宽度为 50px,您的 Icon 样式应如下所示:

const Icon = styled(MaterialIcon)`
  color: ${props => props.color.replace(/['"]+/g, '')};
  font-size: 36px;
  position: absolute;
  z-index: 1;
  top: 10%;
  left: -25px;
`;

确保也给你的分隔线一个 z-index 0,这样图标就会出现在它上面。