All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.cobraparser.html.style.CSSNorm Maven / Gradle / Ivy

There is a newer version: 1.0.2
Show newest version
/*
 * CSSNorm.java
 * Copyright (c) 2005-2007 Radek Burget
 *
 * CSSBox is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * CSSBox is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with CSSBox. If not, see .
 *
 * Created on 21. leden 2005, 22:28
 */

package org.cobraparser.html.style;

/**
 * This class provides standard style sheets for the browser.
 *
 * @author radek
 */
public class CSSNorm
{

  /**
   * Defines a standard HTML style sheet defining the basic style of the
   * individual elements. It corresponds to the CSS2.1 recommendation (Appendix
   * D).
   *
   * @return the style string
   */
  //TODO refer issue #89
  public static String stdStyleSheet()
  {
    return
        "html, address," +
        "blockquote," +
        "body, dd, div," +
        "dl, dt, fieldset, form," +
        "frame, frameset," +
        "h1, h2, h3, h4," +
        "h5, h6, noframes," +
        "ol, p, ul, center," +
        // unicode-bidi: embed was missing in the style sheet provided by jStyle
        // but since it was recommended by W3C, added it back.
        "dir, hr, menu, pre   { display: block; unicode-bidi: embed; }" +
        "li              { display: list-item }" +
        "head            { display: none }" +
        "table           { display: table }" +
        "tr              { display: table-row }" +
        "thead           { display: table-header-group }" +
        "tbody           { display: table-row-group }" +
        "tfoot           { display: table-footer-group }" +
        "col             { display: table-column }" +
        "colgroup        { display: table-column-group }" +
        "td, th          { display: table-cell; }" +
        "caption         { display: table-caption }" +
        "th              { font-weight: bolder; text-align: center }" +
        "caption         { text-align: center }" +
        "body            { margin: 8px; }" +
        "h1              { font-size: 2em; margin: .67em 0 }" +
        "h2              { font-size: 1.5em; margin: .75em 0 }" +
        "h3              { font-size: 1.17em; margin: .83em 0 }" +
        "h4, p," +
        // according to https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dir
        //  element was deprecated in HTML4 and is obsolete in HTML5.
        // But since there is a default style for this in CSS2 recommended style sheet, we
        // are adding it.
        "blockquote, ul," +
        "fieldset, form," +
        "ol, dl, dir," +
        "menu            { margin: 1em 0 }" + // Changed from 1.2em to match css21 test expectations. Other browsers seem to use 1em as well.
        "h5              { font-size: .83em; margin: 1.5em 0 }" +
        "h6              { font-size: .75em; margin: 1.67em 0 }" +
        "h1, h2, h3, h4," +
        "h5, h6, b," +
        "strong          { font-weight: bolder }" +
        "blockquote      { margin-left: 40px; margin-right: 40px }" +
        "i, cite, em," +
        "var, address    { font-style: italic }" +
        "pre, tt, code," +
        "kbd, samp       { font-family: monospace }" +
        "pre             { white-space: pre }" +
        "button, textarea," +
        // object selector was added by jStyle library, but since we don't support Object
        // we are removing it. This will also make this style sheet W3C recommendation compliant.
        "input, select   { display:inline-block; }" +
        "big             { font-size: 1.17em }" +
        "small, sub, sup { font-size: .83em }" +
        "sub             { vertical-align: sub }" +
        "sup             { vertical-align: super }" +
        "table           { border-spacing: 2px; }" +
        "thead, tbody," +
        "tfoot           { vertical-align: middle }" +
        "td, th, tr      { vertical-align: inherit }" +
        "s, strike, del  { text-decoration: line-through }" +
        "hr              { border: 1px inset }" +
        "ol, ul, dir," +
        "menu, dd        { margin-left: 40px }" +
        "ol              { list-style-type: decimal }" +
        "ol ul, ul ol," +
        "ul ul, ol ol    { margin-top: 0; margin-bottom: 0 }" +
        "u, ins          { text-decoration: underline }" +
        "br:before       { content: \"\\A\" }"+

        // TODO
        // added by jStyle library and since it does not affect us, leaving it commented.
        //":before, :after { white-space: pre-line }"+
        "center          { text-align: center }" +
        ":link, :visited { text-decoration: underline }" +
        ":focus          { outline: thin dotted invert }" +

        /* Begin bidirectionality settings (do not change) */
        "BDO[DIR=\"ltr\"]  { direction: ltr; unicode-bidi: bidi-override }" +
        "BDO[DIR=\"rtl\"]  { direction: rtl; unicode-bidi: bidi-override }" +

        "*[DIR=\"ltr\"]    { direction: ltr; unicode-bidi: embed }" +
        "*[DIR=\"rtl\"]    { direction: rtl; unicode-bidi: embed }";
    // this was there in the recommended style sheet from W3C but missing in the default
    // style sheet provided from JStyleParser Library. Since we
    // are not supporting print media type as of now, we are just adding it and a comment
    // to this style sheet.
    /*
    @media print {
      h1            { page-break-before: always }
      h1, h2, h3,
      h4, h5, h6    { page-break-after: avoid }
      ul, ol, dl    { page-break-before: avoid }
    }
     */
  }

  /**
   * A style sheet defining the additional basic style not covered by the CSS
   * recommendation.
   *
   * @return The style string
   */
  public static String userStyleSheet()
  {
    return
        "html   { overflow: auto; }"+

        // makes sure that a links do not inherit cursor, they should have a default value
        "a[href]{ cursor: pointer; color: blue; text-decoration: underline; }" +
        "label{cursor:default}" +
        "script { display: none; }" +
        "style  { display: none; }" +
        "option { display: none; }" +
        "br     { display: block; }" +
        "hr     { display: block; margin-top: 1px solid; }" +

        //standard 
    margin according to Mozilla "ul { margin-left: 0; padding-left: 40px; }" + // In jStyleParser code, these were in the recommended section, // but we have moved them here as they are not part of the W3C recommendation. "abbr, acronym { font-variant: small-caps; letter-spacing: 0.1em }" + // In both Firefox and Chromium, text-align for tables is reset and not inherited "table {text-align: left}" + // Adding some new html5 block elements "article, aside, footer, header, hgroup, main, nav, section {display:block}"; } /** * A style sheet defining a basic style of form fields. This style sheet may * be used for a simple rendering of form fields when their functionality is * not implemented in another way. * * @return The style string */ public static String formsStyleSheet() { return "input, textarea, select { " + " font-size: 80%;" + " color: black;" + " white-space: pre;" + "}" + "input[type='submit']," + "input[type='reset']," + "input[type='button'] {" + " display: inline-block;" + " box-sizing: border-box;" + " border-right: 1px solid black;" + " border-bottom: 1px solid black;" + " border-top: 1px solid white;" + " border-left: 1px solid white;" + " background-color: #ddd;" + " padding: 0 0.5em;" + "}" + "input[type='submit']:before," + "input[type='reset']:before," + "input[type='button']:before {" + " display: block;" + " text-align: center;" + " content: attr(value);" + "}" + "input[type='radio']," + "input[type='checkbox'] {" + " display: inline-block;" + " border: 1px solid black;" + " background-color: white;" + " width: 6px;" + " height: 10px;" + " line-height: 9px;" + " font-size: 10px;" + " padding: 0 2px;" + "}" + "input[type='radio']:before," + "input[type='checkbox']:before {" + " content: ' ';" + "}" + "input[checked]:before {" + " content: 'x';" + "}" + "input[type='text']," + "input[type='password']," + "textarea," + "select {" + " display: inline-block;" + " border-right: 1px solid #eee;" + " border-bottom: 1px solid #eee;" + " border-top: 1px solid black;" + " border-left: 1px solid black;" + " background-color: #fff;" + " width: 15em;" + " overflow: hidden;" + " padding: 0;" + "}" + "input[type='text']:before," + "input[type='password']:before {" + " content: attr(value);" + "}" + "input[type='hidden'] {" + " display: none;" + "}" + "textarea {" + " height: 2em;" + " width: 15em;" + " white-space: normal;" + "}" + "select {" + " white-space: normal;" + "}" + "select option {" + " display: none;" + "}" + "select option:nth-of-type(1) {" + " display: block;" + "}" + "select[size] option:nth-of-type(2)," + "select[size] option:nth-of-type(3) {" + " display: block;" + "}" + "select[size='1'] option:nth-of-type(2)," + "select[size='1'] option:nth-of-type(3) {" + " display: none;" + "}" + "select[size='2'] option:nth-of-type(3) {" + " display: none;" + "}"; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy