TabContainer.less 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. /* TabContainer
  2. *
  3. * Styling TabContainer means styling the TabList and Its content container (dijitTitlePane)
  4. *
  5. * Tab List: (including 4 kinds of tab location)
  6. * .dijitTabContainerTop-tabs - tablist container at top
  7. * .dijitTabContainerBottom-tabs - tablist container at bottom
  8. * .dijitTabContainerLeft-tabs - tablist container at left
  9. * .dijitTabContainerRight-tabs - tablist container at right
  10. *
  11. * Tab Strip Button:
  12. * .dijitTabStripIcon - tab strip button icon
  13. * .dijitTabStripMenuIcon - down arrow icon position
  14. * .dijitTabStripSlideLeftIcon - left arrow icon position
  15. * .dijitTabStripSlideRightIcon - right arrow icon position
  16. *
  17. * .tabStripButtonDisabled - styles for disabled tab strip buttons
  18. *
  19. * Tab Button:
  20. * .dijitTabContainerTop-tabs .dijitTabInnerDiv/.dijitTabContent - styles for top tab button container
  21. * .dijitTabContainerBottom-tabs .dijitTabInnerDiv/.dijitTabContent - styles for bottom tab button container
  22. * .dijitTabContainerLeft-tabs .dijitTabInnerDiv/.dijitTabContent - styles for left tab button container
  23. * .dijitTabContainerRight-tabs .dijitTabInnerDiv/.dijitTabContent - styles for right tab button container
  24. *
  25. * .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv/.dijitTabContent
  26. * - styles for selected status of top tab button
  27. * same to Bottom, Left, Right Tabs
  28. *
  29. * .dijitTabHover .dijitTabInnerDiv - styles when mouse hover on tab buttons
  30. * .dijitTabActive .dijitTabInnerDiv - styles when mouse down on tab buttons
  31. * .dijitTabChecked .dijitTabInnerDiv - styles when on buttons of selected tab
  32. *
  33. * .dijitTabCloseButton - the close action buttons lie at the right top of each tab button on closable tabs
  34. * .dijitTabCloseButtonHover - styles when mouse hover on close action button
  35. * .dijitTabCloseButtonActive - styles when mouse down on close action button
  36. *
  37. * Tab Button: (checked status)
  38. *
  39. * Tab Content Container:
  40. * .dijitTabContainerTop-dijitContentPane
  41. * .dijitTabContainerBottom-dijitContentPane
  42. * .dijitTabContainerLeft-dijitContentPane
  43. * .dijitTabContainerRight-dijitContentPane - for background and padding
  44. *
  45. * Nested Tabs:
  46. * .dijitTabContainerNested - Container for nested tabs
  47. * .dijitTabContainerTabListNested - tab list container for nested tabs
  48. */
  49. @import "../variables";
  50. /*** some common features ***/
  51. .claro .dijitTabPaneWrapper {
  52. background:@pane-background-color;
  53. }
  54. .claro .dijitTabPaneWrapper,
  55. .claro .dijitTabContainerTop-tabs,
  56. .claro .dijitTabContainerBottom-tabs,
  57. .claro .dijitTabContainerLeft-tabs,
  58. .claro .dijitTabContainerRight-tabs {
  59. /* todo: add common class name for this div */
  60. border-color: @border-color;
  61. }
  62. .claro .dijitTabCloseButton {
  63. background: url("images/tabClose.png") no-repeat;
  64. width: 14px;
  65. height: 14px;
  66. margin-left: 5px;
  67. margin-right:-5px;
  68. }
  69. .claro .dijitTabCloseButtonHover {
  70. background-position:-14px;
  71. }
  72. .claro .dijitTabCloseButtonActive {
  73. background-position:-28px;
  74. }
  75. .claro .dijitTabSpacer {
  76. /* set the spacer invisible. note that height:0 doesn't work on IE/quirks, it's still 10px. */
  77. display: none;
  78. }
  79. .claro .dijitTabInnerDiv {
  80. background-color:@unselected-background-color;
  81. .transition-property(background-color, border);
  82. .transition-duration(.35s);
  83. color:@unselected-text-color;
  84. }
  85. .claro .dijitTabHover .dijitTabInnerDiv {
  86. background-color:@hovered-background-color;
  87. .transition-duration(.25s);
  88. color:@hovered-text-color;
  89. }
  90. .claro .dijitTabActive .dijitTabInnerDiv {
  91. background-color:@pressed-background-color;
  92. color:@selected-text-color;
  93. .transition-duration(.1s);
  94. }
  95. .claro .dijitTabChecked .dijitTabInnerDiv {
  96. background-color:@selected-background-color;
  97. color:@selected-text-color;
  98. }
  99. .claro .dijitTabContent {
  100. border: 1px solid @border-color;
  101. }
  102. .claro .dijitTabHover .dijitTabContent {
  103. border-color: @hovered-border-color;
  104. }
  105. .claro .dijitTabActive .dijitTabContent {
  106. border-color: @pressed-border-color;
  107. }
  108. .claro .dijitTabChecked .dijitTabContent {
  109. color:@selected-text-color; // todo: redundant with .claro .dijitTabChecked .dijitTabInnerDiv above?
  110. border-color: @border-color; // don't use @selected-border-color because need to match border of TabContainer
  111. }
  112. .claro .tabStripButton .dijitTabInnerDiv {
  113. background-color: transparent;
  114. }
  115. .claro .tabStripButton .dijitTabContent {
  116. border: none;
  117. }
  118. /*** end common ***/
  119. /*************** top tab ***************/
  120. .claro .dijitTabContainerTop-tabs .dijitTab {
  121. top: 1px; /* used for overlap */
  122. margin-right: 1px;
  123. padding-top: 3px;
  124. }
  125. .dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTab {
  126. top: 3px;
  127. }
  128. /* for top tab padding. change height when status changes */
  129. .claro .dijitTabContainerTop-tabs .dijitTabContent {
  130. padding:3px 6px;
  131. border-bottom-width: 0;
  132. background-image:url("images/tabTop.png");
  133. background-position:0 0;
  134. background-repeat:repeat-x;
  135. min-width: 60px;
  136. text-align: center;
  137. }
  138. .claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabContent {
  139. padding-bottom: 4px;
  140. padding-top: 6px;
  141. }
  142. /* normal status */
  143. .claro .dijitTabContainerTop-tabs .dijitTabInnerDiv {
  144. background-image:url("images/tabTop.png");
  145. background-position:0 -248px;
  146. background-position:bottom;
  147. background-repeat:repeat-x;
  148. .box-shadow(0 -1px 1px rgba(0, 0, 0, 0.04));
  149. }
  150. /* checked status */
  151. .claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv {
  152. background-image:none;
  153. .box-shadow(0 -1px 2px rgba(0, 0, 0, 0.05));
  154. }
  155. .claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabContent {
  156. background-position:0 -102px;
  157. background-repeat:repeat-x;
  158. }
  159. /** end top tab **/
  160. /*************** bottom tab ***************/
  161. .claro .dijitTabContainerBottom-tabs .dijitTab {
  162. top: -1px; /* used for overlap */
  163. margin-right: 1px;
  164. }
  165. /* calculate the position and size */
  166. .claro .dijitTabContainerBottom-tabs .dijitTabContent {
  167. padding:3px 6px;
  168. border-top-width: 0;
  169. background-image: url("images/tabBottom.png");
  170. background-position:0 -249px;
  171. background-repeat: repeat-x;
  172. background-position:bottom;
  173. min-width: 60px;
  174. text-align: center;
  175. }
  176. .claro .dijitTabContainerBottom-tabs .dijitTab {
  177. padding-bottom: 3px;
  178. }
  179. /* normal status */
  180. .claro .dijitTabContainerBottom-tabs .dijitTabInnerDiv {
  181. background-image: url("images/tabBottom.png");
  182. background-position: top;
  183. background-repeat: repeat-x;
  184. .box-shadow(0 1px 1px rgba(0, 0, 0, 0.04));
  185. }
  186. /* checked status */
  187. .claro .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabContent {
  188. padding-bottom: 7px;
  189. padding-top: 4px;
  190. background-position:0 -119px;
  191. }
  192. .claro .dijitTabContainerBottom-tabs .dijitTabChecked {
  193. padding-bottom: 0;
  194. }
  195. .claro .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv {
  196. background-image:none;
  197. .box-shadow(0 1px 2px rgba(0, 0, 0, 0.05));
  198. }
  199. /** end bottom tab **/
  200. /*************** left tab ***************/
  201. .claro .dijitTabContainerLeft-tabs .dijitTab {
  202. border-right-width: 0;
  203. left: 1px; /* used for overlap */
  204. margin-bottom: 1px;
  205. }
  206. /* normal status */
  207. .claro .dijitTabContainerLeft-tabs .dijitTabInnerDiv {
  208. background-image: url("images/tabLeft.png");
  209. background-position: -347px -340px;
  210. background-repeat: repeat-y;
  211. }
  212. .claro .dijitTabContainerLeft-tabs .dijitTabContent {
  213. padding:3px 8px 4px 4px;
  214. background-image: url("images/tabLeft.png");
  215. background-repeat: repeat-y;
  216. background-position:0 0;
  217. }
  218. /* checked status */
  219. .claro .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabContent {
  220. padding-right: 9px;
  221. border-right: none;
  222. background-image: none;
  223. }
  224. .claro .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv {
  225. background-position:0 -179px;
  226. background-repeat:repeat-y;
  227. .box-shadow(-1px 0 2px rgba(0, 0, 0, .05));
  228. }
  229. /** end left tab **/
  230. /*************** right tab ***************/
  231. .claro .dijitTabContainerRight-tabs .dijitTab {
  232. border-left-width: 0;
  233. left: -1px; /* used for overlap */
  234. margin-bottom: 1px;
  235. }
  236. /* normal status */
  237. .claro .dijitTabContainerRight-tabs .dijitTabInnerDiv {
  238. background-image: url("images/tabRight.png");
  239. background-repeat: repeat-y;
  240. background-position: -1px -347px;
  241. }
  242. .claro .dijitTabContainerRight-tabs .dijitTabContent {
  243. padding:3px 8px 4px 4px;
  244. background-image: url("images/tabRight.png");
  245. background-position:right top;
  246. background-repeat: repeat-y;
  247. }
  248. /* checked status */
  249. .claro .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabContent {
  250. padding-left: 5px;
  251. border-left: none;
  252. background-image: none;
  253. }
  254. .claro .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv {
  255. background-position:-348px -179px;
  256. .box-shadow(1px 0 2px rgba(0, 0, 0, 0.07));
  257. }
  258. /** end right tab **/
  259. /** round corner **/
  260. .claro .dijitTabContainerTop-tabs .dijitTabInnerDiv,
  261. .claro .dijitTabContainerTop-tabs .dijitTabContent {
  262. .border-radius(2px 2px 0 0);
  263. }
  264. .claro .dijitTabContainerBottom-tabs .dijitTabInnerDiv,
  265. .claro .dijitTabContainerBottom-tabs .dijitTabContent{
  266. .border-radius(0 0 2px 2px);
  267. }
  268. .claro .dijitTabContainerLeft-tabs .dijitTabInnerDiv,
  269. .claro .dijitTabContainerLeft-tabs .dijitTabContent{
  270. .border-radius(2px 0 0 2px);
  271. }
  272. .claro .dijitTabContainerRight-tabs .dijitTabInnerDiv,
  273. .claro .dijitTabContainerRight-tabs .dijitTabContent{
  274. .border-radius(0 2px 2px 0);
  275. }
  276. /************ left/right scroll buttons + menu button ************/
  277. .claro .tabStripButton {
  278. background-color:@button-background-color;
  279. border: 1px solid @border-color;
  280. }
  281. .claro .dijitTabListContainer-top .tabStripButton {
  282. padding: 4px 3px;
  283. margin-top:7px;
  284. background-image: url("images/tabTop.png");
  285. background-position:0 0;
  286. }
  287. .claro .dijitTabListContainer-bottom .tabStripButton {
  288. padding:5px 3px;
  289. margin-bottom:4px;
  290. background-image: url("images/tabTop.png");
  291. background-position:0 -248px;
  292. background-position:bottom;
  293. }
  294. .claro .tabStripButtonHover {
  295. background-color:@hovered-background-color;
  296. }
  297. .claro .tabStripButtonActive {
  298. background-color:@pressed-background-color;
  299. }
  300. .claro .dijitTabStripIcon {
  301. height:15px;
  302. width:15px;
  303. margin: 0 auto;
  304. background:url("../form/images/buttonArrows.png") no-repeat -75px 50%;
  305. background-color: transparent;
  306. }
  307. .claro .dijitTabStripSlideRightIcon{
  308. background-position: -24px 50%;
  309. }
  310. .claro .dijitTabStripMenuIcon {
  311. background-position: -51px 50%;
  312. }
  313. /*disabled styles for tab strip buttons*/
  314. .claro .dijitTabListContainer-top .tabStripButtonDisabled,
  315. .claro .dijitTabListContainer-bottom .tabStripButtonDisabled {
  316. background-color:@tab-disabled-background-color;
  317. border:1px solid @border-color; /* to match border of TabContainer itself */
  318. }
  319. .claro .tabStripButtonDisabled .dijitTabStripSlideLeftIcon {
  320. background-position:-175px 50%;
  321. }
  322. .claro .tabStripButtonDisabled .dijitTabStripSlideRightIcon {
  323. background-position: -124px 50%;
  324. }
  325. .claro .tabStripButtonDisabled .dijitTabStripMenuIcon {
  326. background-position: -151px 50%;
  327. }
  328. /* Nested Tabs */
  329. .claro .dijitTabContainerNested .dijitTabListWrapper {
  330. height: auto;
  331. }
  332. .claro .dijitTabContainerNested .dijitTabContainerTop-tabs {
  333. border-bottom:solid 1px @border-color;
  334. padding:1px 2px 4px;
  335. margin-top:-2px;
  336. }
  337. .claro .dijitTabContainerTabListNested .dijitTabContent {
  338. background:rgba(255, 255, 255, 0) none repeat scroll 0 0;
  339. border: none;
  340. padding: 4px;
  341. border-color: rgba(118,157,192,0);
  342. .transition-property(background-color, border-color);
  343. .transition-duration(.3s);
  344. .border-radius(2px);
  345. }
  346. .claro .dijitTabContainerTabListNested .dijitTab .dijitTabInnerDiv {
  347. /* 4 element selector to override box-shadow setting from above rule:
  348. * .claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv { ... }
  349. */
  350. background: none;
  351. border: none;
  352. top: 0;/* to override top: 1px/-1px for normal tabs */
  353. .box-shadow(none);
  354. }
  355. .claro .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent {
  356. background-color: @nestedtab-hovered-background-color;
  357. border:solid 1px @nestedtab-hovered-border-color;
  358. padding: 3px;
  359. .transition-duration(.2s);
  360. }
  361. .claro .dijitTabContainerTabListNested .dijitTabHover .tabLabel {
  362. text-decoration: none;
  363. }
  364. .claro .dijitTabContainerTabListNested .dijitTabActive .dijitTabContent {
  365. border:solid 1px @nestedtab-selected-border-color;
  366. padding: 3px;
  367. background: @nestedtab-selected-background-color url("images/tabNested.png") repeat-x;
  368. .transition-duration(.1s);
  369. }
  370. .claro .dijitTabContainerTabListNested .dijitTabChecked .dijitTabContent {
  371. padding: 3px;
  372. border:solid 1px @selected-border-color;
  373. background-position: 0 105px;
  374. background-color:@selected-background-color;
  375. }
  376. .claro .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {
  377. text-decoration: none;
  378. background-image:none;
  379. }
  380. .claro .dijitTabPaneWrapperNested {
  381. border: none;/* prevent double border */
  382. }
  383. .dj_ie6 .claro .dijitTabContent,
  384. .dj_ie6 .claro .dijitTabInnerDiv,
  385. .dj_ie6 .dijitTabListContainer-top .tabStripButton,
  386. .dj_ie6 .dijitTabListContainer-bottom .tabStripButton{
  387. background-image: none;
  388. }
  389. // Workaround IE9 bug when document mode is IE7 standards; focus outline doesn't show.
  390. // Unfortunately a:focus rules doesn't work either.
  391. // This hack may be unnecessary after the TabButton CSS is simplified by consolidating nested divs.
  392. // Unfortunately, this rule makes the tab labels jump a bit when they get focus. Should reduce
  393. // padding simultaneously if that's a big issue. But it only affects IE in compatibility / quirks mode.
  394. .claro .dijitTabFocused .dijitTabContent > * {
  395. *border: dotted 1px gray;
  396. }