反应响应式设计

时间:2016-09-06 11:15:45

标签: reactjs twitter-bootstrap-3 responsive-design

我目前正在使用React应用。我考虑使用bootstrap来设计自适应应用。

我想知道是否应该使用纯bootstrap库或使用react-bootstrap

还有一些类似于react-bootstrap的{​​{3}}或react-grid-layout类似的库。

那么设计响应式应用程序的最佳库是什么? 谢谢!

3 个答案:

答案 0 :(得分:5)

没有完美的库可用于创建响应式应用。通常,实现卓越的唯一方法是通过专注时间和智能造型。

我通常建议使用flexbox而不是第三方框架。这是一个开始实现响应式应用程序的好地方,它是一个可以在react-native上运行的vanilla CSS。

如果您仍想利用其中一个库,只需使用您感觉更舒适的库。我使用过bootstrap v3和v4。如果使用React,请转到react-bootstrap,这样您就不需要jQuery,并且节省了大量的冗长。它拥有大量的社区和专业知识,因此对于任何中期或更长期的项目来说,它都是合理的选择。

希望它有所帮助。

答案 1 :(得分:1)

如果您想在React中进行响应式设计

首先:您应该在Linux上使用此命令安装响应式反应

public function certPdfGenerate()
{
    ini_set('memory_limit', '-1');
    $apply_id=  input::get('id');
    $get_certificate_data = DB::Connection('mysql1')->table('tbl_apply_certificate')->where('apply_id',$apply_id)->first();
    $get_certificate_id1 = DB::Connection('mysql1')->table('tbl_apply_certificate')->select('apply_certificate_id')->where('apply_id',$apply_id)->get()->toArray();
    foreach ($get_certificate_id1 as $key) 
        {
            $get_certificate_id = $key->apply_certificate_id;
        }
    $filename = $get_certificate_id.'.pdf';
    DB::Connection('mysql1')->table('tbl_apply_certificate')
        ->where('apply_id', $apply_id)
        ->update(['apply_pdf' => $filename]);       
    $data1 = [$get_certificate_data];
    $pdf=PDF::loadView('students::htmlcertificate', array('data' =>$data1), [], ['format' => 'A4-L']);
    $pdf->setPaper('A4', 'landscape');
    return $pdf->stream($filename);
}

提示:反应响应和响应反应是2个不同的程序包

第二:对于响应式设计,您应该为每个宽度设置位置,例如移动平板电脑或.....单独

这是我的示例index.js文件

<!DOCTYPE html>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  
  <meta name="csrf-token" content="{{ csrf_token() }}">
  
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Certificate View</title>
  <style type="text/css">
    @page 
    {
        size: 21.87cm 30.69cm landscape;
        margin-top:0;
        margin-bottom:0;
        margin-left:0;
        margin-right:0;
        padding: 0;
    }
    body
    {
        position: relative;
    }
    #certbackground
    {
          background-image: url('https://example.com/backend/public/cer_template/certtemplate.png');
          background-repeat: no-repeat;
          background-position: center;
          background-size: contain;
          z-index: -1;
          height: 100%;
          width: 100%;
          top: 0;
          left: 0;
          position: absolute;
    }

  </style>
</head>
<body>
<div id="certbackground">
  @foreach ($data as $value)

  <h3 style="margin-top: 860px;margin-left: 1370px;font-weight: 600;font-size:60px;color: #333;">{{$value->apply_name}}</h3>

  <img style="height: 600px!important;margin-top: -18px;margin-left: 2880px;" src="{{ URL::asset('public/certif_pro_image/'.$value->apply_photo) }}" />

  <h3 style="top:-160px!important;margin-top:-500px!important;margin-left: 1370px;font-weight: 600;font-size:60px;color: #333;">{{$value->apply_course}}</h3>

  <h3 style="position:absolute;top:1310px!important;margin-left: 1930px;font-weight: 600;font-size:60px;color: #333;">{{date('d-m-Y', strtotime($value->apply_start_date))}}</h3>

  <h3 style="position:absolute;top:1250px!important;margin-left: 2370px;font-weight: 600;font-size:60px;color: #333;">{{date('d-m-Y', strtotime($value->apply_end_date))}}</h3>

  <h3 style="position:absolute;top:1410px!important;margin-left: 1580px;font-weight: 600;font-size:60px;color: #333;">{{$value->apply_grade}}</h3>

  <h3 style="position:absolute;top:1410px!important;margin-left: 2290px;font-weight: 600;font-size:60px;color: #333;">{{$value->apply_certificate_id}}</h3>

  <h3 style="position:absolute;top:1575px!important;margin-left: 1575px;font-weight: 600;font-size:60px;color: #333;">{{$value->apply_centre}}</h3>

  @endforeach
</div>

</body>
</html>

这是我的示例styles.css文件

npm install responsive-react --save

在此示例中,我为为每个设备(笔记本电脑,平板电脑和移动设备)的设备特殊宽度设置的每个断点调用3次表单。

每个断点在响应式反应中描述,我们将这些断点或(特殊宽度)与(import React from "react"; import ReactDOM from "react-dom"; import { Responsive, isMobileDevice, isTabletDevice, isLaptopDevice } from "responsive-react"; import "./styles.css"; function App() { return ( <div className="App"> <Responsive displayIn={["mobile"]}> <form className="s"> <label htmlFor="username">Username:</label> <br /> <input type="text" id="username" name="username" /> <br /> <label htmlFor="pwd">Password:</label> <br /> <input type="password" id="pwd" name="pwd" /> <br /> <br /> <input type="submit" defaultValue="Submit" /> </form> </Responsive> <Responsive displayIn={["tablet"]}> <form className="r"> <label htmlFor="username">Username:</label> <br /> <input type="text" id="username" name="username" /> <br /> <label htmlFor="pwd">Password:</label> <br /> <input type="password" id="pwd" name="pwd" /> <br /> <br /> <input type="submit" defaultValue="Submit" /> </form> </Responsive> <Responsive displayIn={["laptop"]}> <form className="t"> <label htmlFor="username">Username:</label> <br /> <input type="text" id="username" name="username" /> <br /> <label htmlFor="pwd">Password:</label> <br /> <input type="password" id="pwd" name="pwd" /> <br /> <br /> <input type="submit" defaultValue="Submit" /> </form> </Responsive> {/* This function works on load */} </div> ); } ReactDOM.render(<Test />, document.getElementById('root')); .App { font-family: sans-serif; text-align: center; } .s { position: relative; top: 150px; left: 350px; } .r { position: relative; top: 50px; left: 150px; } .t { position: relative; top: 250px; left: 20px; } 一起使用,我们在每个断点中调用3次表格或描述宽度,然后指定{ {1}}放置到表单中,并每次针对每个宽度或断点定位它,以这种方式可以指定其外观。

就这样。

现在,当您更改浏览器屏幕或(在手机,笔记本电脑或平板电脑上打开)屏幕宽度时,表格将显示在您描述的位置 每个设备。

答案 2 :(得分:0)

如果您想使用React构建自适应网络应用,则应使用bulma.io。它是一个基于Flexbox的现代CSS框架。