To make sure the checkbox is not selectable, you should also deactivate it:
<input type="checkbox" onclick="return false;" disabled="disabled">
If you need to capture the value, simply set it as readonly instead:
<input type="checkbox" onclick="return false;" readonly="readonly">
You can customize the styling of the checkbox label and read-only inputs using CSS, for example: input [readonly="readonly"] {} Nevertheless, the browser should display the checkbox in a grayed-out manner when marked as readonly.
Update:
When it comes to styling checkboxes consistently across all browsers, you are reliant on how each individual browser interprets this element. To ensure uniform appearance, utilizing images may be required e.g.:
If implementing image solutions seems too complicated, an easier approach would be to disable the checkbox for visual correctness and submit the value through a hidden input field like so:
<input type="checkbox" onclick="return false;" disabled="disabled">
<input type="hidden" name="checkboxval" value="111" />