diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js
index 8e5ee1a..8d91e78 100644
--- a/docs/.vuepress/config.js
+++ b/docs/.vuepress/config.js
@@ -83,7 +83,8 @@
               children: [
                 ['advanced/asset-path', 'Asset Path'],
                 ['advanced/downgrade', 'Downgrade'],
-                ['advanced/use-vuex-and-vue-router', 'Use Vuex and vue-router']
+                ['advanced/use-vuex-and-vue-router', 'Use Vuex and vue-router'],
+                ['advanced/multi-size-screen', 'Fit for multi-size screen']
               ]
             },
             {
@@ -253,7 +254,8 @@
               children: [
                 ['advanced/asset-path', '资源路径'],
                 ['advanced/downgrade', '降级方案'],
-                ['advanced/use-vuex-and-vue-router', '使用Vuex和vue-router']
+                ['advanced/use-vuex-and-vue-router', '使用Vuex和vue-router'],
+                ['advanced/multi-size-screen', '适应不同尺寸屏幕']
               ]
             },
             {
diff --git a/docs/guide/advanced/multi-size-screen.md b/docs/guide/advanced/multi-size-screen.md
new file mode 100644
index 0000000..294b2ba
--- /dev/null
+++ b/docs/guide/advanced/multi-size-screen.md
@@ -0,0 +1,174 @@
+---
+title: Fit for multi-size screens
+type: guide
+group: Advanced Guide
+order: 8.1
+version: 2.1
+has_chapter_content: true
+---
+
+## Summary
+
+In this article, we demonstrate how to fit Weex pages for different or changable screen sizes such as orientation switches.
+
+## How Weex convert a CSS style ot view coordinate
+
+Take iOS as example, when your application starts up, Weex acquires current device screen width as global variable. On iOS, this value is screen physical pixels divided by screen scale. For iPhone6, this value is 375.
+
+```C
+@implementation WXCoreBridge
+
++ (void)install
+{
+    static dispatch_once_t onceToken;
+    dispatch_once(&onceToken, ^{
+        WeexCore::WXCoreEnvironment* env = WeexCore::WXCoreEnvironment::getInstance();
+        env->SetPlatform(OS_iOS);
+        env->AddOption("scale", "1");
+        
+        CGSize screenSize = [UIScreen mainScreen].bounds.size;
+        env->SetDeviceWidth(std::to_string(screenSize.width));
+        env->SetDeviceHeight(std::to_string(screenSize.height));
+        ...
+        ...
+}
+```
+
+When every WXSDKInstance is created, it's default viewPortWidth is 750px.
+
+```C
+// The default screen width which helps us to calculate the real size or scale in different devices.
+static const CGFloat WXDefaultScreenWidth = 750.0;
+```
+
+If you set a CSS style as "375px", in Weex, this value is automatically converted to a UIKit system value considering current screen width and the current instance's viewPortWidth.
+
+```C
+dimension(UIKit) = dimensionPx(CSS) / viewPortWidth(instance) * globalScreenWidth
+```
+
+We get:
+dimension(UIKit) = 375 / 750 * 375 = 187.5
+
+After that, Weex use value 187.5 for layout and set the final value after layout to an iOS UIView, no more conversion.
+
+## Why Weex does not support orientation switch
+
+As mentioned above, Weex converts a raw CSS style value to UI system's unit and dropped the raw style value. This is for historical reason, and could save a lot of memory for huge and complcated pages.
+
+At the same time, Weex does not support style value as percentage. Massive existing pages use 750px as the default viewPortWidth, and all sub elements in the page use coordinate values relative to 750 which is treated as full screen width.
+
+When screen rotated, as for iPhone6, the "width * height" would be "667 * 375". We need raw style value to calculate the new value for layout and UIView. But because there are no raw style values, we cannot proceed.
+
+For style value "375px" after rotation, the UIKit value would be:
+
+dimension(UIKit) = 375 / 750 * 667 = 333.5
+
+You can see that 333.5 is still half the screen width.
+
+## Interface for screen
+
+We provide a series of APIs to control layout parameter.
+
+### 1. Set viewPortWidth of a page
+
+#### a. Use Meta Module
+
+```Javascript
+const meta = weex.requireModule('meta');
+meta.setViewport({
+	width: 800
+});
+```
+
+#### b. Use WXSDKInstance
+
+```Objective-C
+WXSDKInstance* instance = [[WXSDKInstance alloc] init];
+[instance setViewportWidth:800.f];
+```
+
+### 2. Set deviceWidth of a page
+
+<Badge text="v0.25+" type="warning"/>
+
+#### a. Use Meta Module
+
+```Javascript
+const meta = weex.requireModule('meta');
+meta.setViewport({
+	deviceWidth: 375,
+	deviceHeight: 800
+});
+```
+
+#### b. Use WXSDKInstance
+
+```Objective-C
+WXSDKInstance* instance = [[WXSDKInstance alloc] init];
+[instance setPageRequiredWidth:375.f height:800.f];
+```
+
+#### c. Set global deviceWidth
+
+```Objective-C
+[WXSDKEngine setGlobalDeviceSize:CGSizeMake([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
+```
+
+### 3. Let a page reserve all raw CSS styles
+
+<Badge text="v0.25+" type="warning"/>
+
+#### a. Use Meta Module
+
+```Javascript
+const meta = weex.requireModule('meta');
+meta.setViewport({
+	reserveCssStyles: true
+});
+```
+
+#### b. Use WXSDKInstance
+
+```Objective-C
+WXSDKInstance* instance = [[WXSDKInstance alloc] init];
+[instance setPageKeepRawCssStyles];
+```
+
+### 4. Force the page to relayout
+
+<Badge text="v0.25+" type="warning"/>
+
+```Objective-C
+[instance reloadLayout];
+```
+
+## Scenarios
+
+### 1. Applications that do not support screen rotation
+
+If your app does not support screen rotation, you can ignore all issues above. When Weex starts up, it will automatically get current screen width and after that all pages will use this global value as default. 
+
+### 2. Support screen rotation for a specific page
+
+<Badge text="v0.25+" type="warning"/>
+
+1. Let the page reserve all CSS style values.
+2. After screen rotation is done, use the code below to reset screen width for the page and trigger relayout.
+
+```Objective-C
+CGFloat w = [UIScreen mainScreen].bounds.size.width;
+CGFloat h = [UIScreen mainScreen].bounds.size.height;
+[_instance setPageRequiredWidth:w height:h];
+[_instance reloadLayout];
+```
+
+You could use latest Playground to test the [demo](http://editor.weex.io/p/wqyfavor/scroller/commit/37810078ef963388b699b5ad7d5e9881)
+
+Remember to turn on screen rotation in control panel.
+
+[image](https://img.alicdn.com/tfs/TB1gWiTcvWG3KVjSZPcXXbkbXXa-240-427.gif)
+
+### 3. Notice
+
+For styles that should not be affected by screen width and viewPortWidth, you should use 'wx' as unit.
diff --git a/docs/zh/guide/advanced/multi-size-screen.md b/docs/zh/guide/advanced/multi-size-screen.md
new file mode 100644
index 0000000..4201d4b
--- /dev/null
+++ b/docs/zh/guide/advanced/multi-size-screen.md
@@ -0,0 +1,172 @@
+---
+title: 适配不同尺寸的屏幕
+type: guide
+group: 高阶特性
+order: 8.1
+version: 2.1
+has_chapter_content: true
+---
+
+## 简介
+
+本文将介绍 Weex 适配不同尺寸屏幕的方法以及横竖屏动态切换时如何自适应。
+
+## Weex 如何将前端样式值转换为系统坐标值
+
+以 iOS 为例，在应用启动时，Weex 获取当前屏幕宽度作为全局默认值。在 iOS 系统上该宽度为实际像素/屏幕比例后的 UIKit 宽度。比如 iPhone6 为 375。
+
+```C
+@implementation WXCoreBridge
+
++ (void)install
+{
+    static dispatch_once_t onceToken;
+    dispatch_once(&onceToken, ^{
+        WeexCore::WXCoreEnvironment* env = WeexCore::WXCoreEnvironment::getInstance();
+        env->SetPlatform(OS_iOS);
+        env->AddOption("scale", "1");
+        
+        CGSize screenSize = [UIScreen mainScreen].bounds.size;
+        env->SetDeviceWidth(std::to_string(screenSize.width));
+        env->SetDeviceHeight(std::to_string(screenSize.height));
+        ...
+        ...
+}
+```
+
+创建的每个 WXSDKInstance，其默认的 viewPortWidth 为 750px。
+```C
+// The default screen width which helps us to calculate the real size or scale in different devices.
+static const CGFloat WXDefaultScreenWidth = 750.0;
+```
+
+当指定 CSS 样式值为 "375px" 时，Weex 在接收到该样式后，自动根据当前屏幕宽度和当前 Instance 的 viewPortWidth 计算出在 iOS 系统上，对应的 UIKit 坐标值为：
+
+```C
+dimension(UIKit) = dimensionPx(CSS) / viewPortWidth(instance) * globalScreenWidth
+```
+
+代入后：
+dimension(UIKit) = 375 / 750 * 375 = 187.5
+
+之后 Weex 排版引擎使用 187.5 来排版，并最终将排版后的结果设置给 iOS UIView。之后没有坐标转换过程了。
+
+## 为什么 Weex 页面不支持横竖屏切换
+
+如上文所述，Weex 最终将原始样式值转换为平台 UI 系统的坐标值，之后原始样式值被丢弃。这个有一定历史原因，且当页面非常大或复杂时，丢弃后可以节省很多内存，因此原始样式值被丢弃。
+
+同时，目前 Weex 不支持百分比布局，大量竖屏页面使用 750px 的 viewPortWidth 值为基准进行开发，页面里的坐标值都是根据 750px 为一个屏幕宽度换算后的值。
+
+当屏幕发生旋转后，比如 iPhone6 手机，旋转后的 “宽 * 高” 为 “667 * 375”。此时我们需要原始的样式值来重新计算出设置给排版引擎的坐标值，如前文所说，排版引擎接收的是 iOS UIKit 的坐标值。这个时候对于仍然为 "375px" 的样式，其计算出的 UIKit 坐标值为：
+
+dimension(UIKit) = 375 / 750 * 667 = 333.5
+
+仍然为宽屏下的屏幕宽度一半。
+
+但是因为原始样式值被丢弃，我们不能支持横竖屏切换。
+
+## 屏幕参数接口
+
+我们通过添加一系列接口让 Weex 使用者可以控制排版参数。
+
+### 一、设置页面使用的 viewPortWidth
+
+#### 1. 使用 Meta Module
+
+```Javascript
+const meta = weex.requireModule('meta');
+meta.setViewport({
+	width: 800
+});
+```
+
+#### 2. 使用 WXSDKInstance 的接口
+
+```Objective-C
+WXSDKInstance* instance = [[WXSDKInstance alloc] init];
+[instance setViewportWidth:800.f];
+```
+
+### 二、设置页面使用的 deviceWidth
+
+<Badge text="v0.25+" type="warning"/>
+
+#### 1. 使用 Meta Module
+
+```Javascript
+const meta = weex.requireModule('meta');
+meta.setViewport({
+	deviceWidth: 375,
+	deviceHeight: 800
+});
+```
+
+#### 2. 使用 WXSDKInstance 的接口
+
+```Objective-C
+WXSDKInstance* instance = [[WXSDKInstance alloc] init];
+[instance setPageRequiredWidth:375.f height:800.f];
+```
+
+#### 3. 设置全局的 deviceWidth
+
+```Objective-C
+[WXSDKEngine setGlobalDeviceSize:CGSizeMake([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
+```
+
+### 三、设置页面保留原始 CSS 样式值
+
+<Badge text="v0.25+" type="warning"/>
+
+#### 1. 使用 Meta Module
+
+```Javascript
+const meta = weex.requireModule('meta');
+meta.setViewport({
+	reserveCssStyles: true
+});
+```
+
+#### 2. 使用 WXSDKInstance 的接口
+
+```Objective-C
+WXSDKInstance* instance = [[WXSDKInstance alloc] init];
+[instance setPageKeepRawCssStyles];
+```
+
+### 四、强制页面重新排版
+
+<Badge text="v0.25+" type="warning"/>
+
+```Objective-C
+[instance reloadLayout];
+```
+
+## 使用场景
+
+### 一、不可旋转屏幕的应用
+
+如果应用不支持屏幕旋转，你可以不用关心以上问题。当 Weex 启动时，会自动获取当前屏幕宽度作为全局宽度，所有之后创建的 Weex 页面都会使用该宽度。
+
+### 二、某个特殊页面支持横竖屏切换
+
+<Badge text="v0.25+" type="warning"/>
+
+1、设置页面保留原始 CSS 样式值
+2、当屏幕旋转完成后，调用以下接口设置新的屏幕尺寸，并重新排版
+```Objective-C
+CGFloat w = [UIScreen mainScreen].bounds.size.width;
+CGFloat h = [UIScreen mainScreen].bounds.size.height;
+[_instance setPageRequiredWidth:w height:h];
+[_instance reloadLayout];
+```
+
+你可以使用最新 Playground 扫码[示例](http://editor.weex.io/p/wqyfavor/scroller/commit/37810078ef963388b699b5ad7d5e9881)
+要在控制面板里允许屏幕自动旋转。
+
+[image](https://img.alicdn.com/tfs/TB1gWiTcvWG3KVjSZPcXXbkbXXa-240-427.gif)
+
+### 三、注意
+
+对于不希望受屏幕宽度和 viewPortWidth 影响的尺寸，请使用 'wx' 单位。
+
