折腾:
【已解决】ReactJS中如何实现在底部的tab选项卡且支持图标
期间,虽然代码:
import { Tab, TabBarItem, Article, } from ‘react-weui’; //import styles import ‘weui’; import ‘react-weui/build/packages/react-weui.css’; import IconButton from ‘assets/img/icon_nav_button.png’; import IconMsg from ‘assets/img/icon_nav_msg.png’; import IconArticle from ‘assets/img/icon_nav_article.png’; return ( <div className=”main_wrapper”> <Tab type=”tabbar”> <TabBarItem icon={<img src={IconButton}/>} label=”首页”> <Article> <PageHeader>Page 1</PageHeader> <section> <h2 className=”title”>标题1</h2> <section> <h3>1.1 Title</h3> <p>页面1</p> </section> </section> </Article> </TabBarItem> <TabBarItem icon={<img src={IconMsg}/>} label=”Tab2″> <Article> <PageHeader>Page 2</PageHeader> <section> <h2 className=”title”>标题2</h2> <section> <h3>2.1 Title</h3> <p>页面2</p> </section> </section> </Article> </TabBarItem> <TabBarItem icon={<img src={IconArticle}/>} label=”Tab3″> <Article> <PageHeader>Page 3</PageHeader> <section> <h2 className=”title”>标题3</h2> <section> <h3>3.1 Title</h3> <p>页面3</p> </section> </section> </Article> </TabBarItem> </Tab> </div> ); |
可以显示出底部的tab的选项卡了,但是位置不对,上移了:
无意间调试发现,去掉:
weui-tab的postion: relative
就可以了。
但是现在:
要去搞清楚,为何会出现这个问题
难道是:
【已解决】Reactjs中导入react-weui.css出错编译:You may need an appropriate loader to handle this file type
期间,引入了css module后导致的问题?
去试试:
{ test: /\.css$/, // use: [‘style-loader’, ‘css-loader’], // use: [ // { loader: ‘style-loader’ }, // { // loader: ‘css-loader’, // options: { // modules: true // } // } // ], use: ExtractTextPlugin.extract({ fallback: ‘style-loader’, // 编译后用什么loader来提取css文件 use: ‘css-loader’ //指需要什么样的loader去编译文件,这里由于源文件是.css所以选择css-loader }), // use: extractCSS.extract([ ‘css-loader’, ‘postcss-loader’ ]), // use: extractCSS.extract([ // ‘css-loader’, // { // loader: ‘postcss-loader’, // options: { // // plugins: () => [require(‘autoprefixer’)] // } // } // ]), // include: path.resolve(__dirname, ‘src’) }, { test: /\.less$/, use: [ { loader: ‘style-loader’ // creates style nodes from JS strings }, { loader: ‘css-loader’ // translates CSS into CommonJS }, { loader: ‘less-loader’ // compiles Less to CSS } ] // test: /\.less$/i, // use: extractLESS.extract([ ‘css-loader’, ‘less-loader’ ]) }, |
结果问题依旧。
又或者是display是flex,和这些position 不匹配?
或者是父级元素,没有指定宽高?
weui postioin relative not work
Relative positioning – popovers do not scroll with content · Issue #144 · sandywalker/webui-popover
html – Top in position relative doesn’t work – Stack Overflow
html – css relative positioning not working in chrome – Stack Overflow
有人说了:
parent应该是:
width: 100%;
height: 100%;
所以此处自己加上去试试
此处虽然加了,但是问题依旧
css relative not work
html – CSS Relative Positioning Not Working – Stack Overflow
结果给parent加了:
display:inline-block;
或:
display:block;
都没用。
试了试:
.weui-tab { position: absolute !important; } |
或:
.main_wrapper { display:inline-block; width: 100%; height: 100%; > weui-tab { position: absolute !important; } } |
都没效果,都没发覆盖weui-tab的postion属性。
CSS position: absolute with position: relative “top” not working – Stack Overflow
position – CSS relative + right (or bottom) almost NEVER work – Stack Overflow
【总结】
weui的tab,此处作为child元素,其中的
position: relative;
没效果,去掉后才可以。
但是又不方便直接去掉(因为是引用的
import ‘react-weui/build/packages/react-weui.css’;
,没发,不方便手动去修改)
结果最后是给parent元素加上:
position: absolute;
.main_wrapper { position: absolute; width: 100%; height: 100%; } |
对应js:
<div className=”main_wrapper”> <Tab type=”tabbar”> <TabBarItem icon={<img src={IconButton}/>} label=”首页”> |
然后就可以了: